File: System\ComponentModel\PropertyDescriptorExtensions.cs
Web Access
Project: src\src\System.Windows.Forms.Primitives\src\System.Windows.Forms.Primitives.csproj (System.Windows.Forms.Primitives)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.ComponentModel;
 
internal static class PropertyDescriptorExtensions
{
    public static bool TryGetValue<T>(this PropertyDescriptor descriptor, object? component, out T? value)
    {
        if (typeof(T).IsAssignableFrom(descriptor.PropertyType))
        {
            value = (T?)descriptor.GetValue(component);
 
            return true;
        }
 
        value = default;
 
        return false;
    }
 
    public static T? GetValue<T>(this PropertyDescriptor descriptor, object? component) where T : class
    {
        if (typeof(T).IsAssignableFrom(descriptor.PropertyType))
        {
            return (T?)descriptor.GetValue(component);
        }
 
        return null;
    }
 
    public static T? GetEditor<T>(this PropertyDescriptor descriptor) => (T?)descriptor.GetEditor(typeof(T));
 
    public static bool TryGetEditor<T>(this PropertyDescriptor descriptor, [NotNullWhen(true)] out T? value)
    {
        value = (T?)descriptor.GetEditor(typeof(T));
 
        return value is not null;
    }
}