File: System\Windows\Forms\Controls\PropertyGrid\PropertyGrid.PropertyGridServiceProvider.cs
Web Access
Project: src\src\System.Windows.Forms\src\System.Windows.Forms.csproj (System.Windows.Forms)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Windows.Forms.PropertyGridInternal;
 
namespace System.Windows.Forms;
 
public partial class PropertyGrid
{
    /// <summary>
    ///  Service provider that searches the <see cref="ActiveDesigner"/>, then the <see cref="PropertyGridView"/>,
    ///  then finally the <see cref="Site"/> for requested services.
    /// </summary>
    private class PropertyGridServiceProvider : IServiceProvider
    {
        private readonly PropertyGrid _ownerPropertyGrid;
 
        public PropertyGridServiceProvider(PropertyGrid ownerPropertyGrid)
        {
            _ownerPropertyGrid = ownerPropertyGrid;
        }
 
        public object? GetService(Type serviceType)
        {
            object? service = _ownerPropertyGrid.ActiveDesigner?.GetService(serviceType);
            service ??= _ownerPropertyGrid._gridView.GetService(serviceType);
            service ??= _ownerPropertyGrid.Site?.GetService(serviceType);
            return service;
        }
    }
}