File: System\Windows\Forms\Design\DataGridViewComponentPropertyGridSite.cs
Web Access
Project: src\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.ComponentModel;
 
namespace System.Windows.Forms.Design;
 
internal class DataGridViewComponentPropertyGridSite : ISite
{
    private readonly IServiceProvider? _serviceProvider;
    private bool _inGetService;
 
    public DataGridViewComponentPropertyGridSite(IServiceProvider? serviceProvider, IComponent component)
    {
        _serviceProvider = serviceProvider;
        Component = component;
    }
 
    /// <summary>
    ///  When implemented by a class, gets the component associated with the <see cref="ISite"/>.
    /// </summary>
    public IComponent Component { get; }
 
    /// <summary>
    /// When implemented by a class, gets the container associated with the <see cref="ISite"/>.
    /// </summary>
    public IContainer? Container => null;
 
    /// <summary>
    ///  When implemented by a class, determines whether the component is in design mode.
    /// </summary>
    public bool DesignMode => false;
 
    /// <summary>
    ///  When implemented by a class, gets or sets the name of the component associated with the <see cref="ISite"/>.
    /// </summary>
    public string? Name { get; set; }
 
    public object? GetService(Type t)
    {
        if (_inGetService || _serviceProvider is null)
        {
            return null;
        }
 
        try
        {
            _inGetService = true;
            return _serviceProvider.GetService(t);
        }
        finally
        {
            _inGetService = false;
        }
    }
}