使用反射(Type.GetProperties)获取DependencyProperties?

问题描述 投票:4回答:1

我有一个自定义类型,作为几个字段,我只想获得依赖属性。

以下是返回所有属性的代码:

propertyInfos = myType.GetProperties();

foreach (PropertyInfo propertyInfo in propertyInfos)
{
    Console.WriteLine(propertyInfo.Name);
}

我知道我必须在GetProperties的参数中添加一些东西,有些是BindingFlags.XXX,但是我检查了所有可能的XX,并且找不到对我来说听起来不错的东西......

c# dependency-properties getproperties
1个回答
5
投票

依赖属性是DependencyProperty类型的静态字段

static IEnumerable<FieldInfo> GetDependencyProperties(Type type)
{
    var dependencyProperties = type.GetFields(BindingFlags.Static | BindingFlags.Public)
                                   .Where(p => p.FieldType.Equals(typeof(DependencyProperty)));
    return dependencyProperties;
}

如果您想获得该控件的父项的依赖项属性,那么您可以使用以下方法:

static IEnumerable<FieldInfo> GetDependencyProperties(Type type)
{
    var properties = type.GetFields(BindingFlags.Static | BindingFlags.Public)
                         .Where(f=>f.FieldType == typeof(DependencyProperty));
    if (type.BaseType != null)
        properties = properties.Union(GetDependencyProperties(type.BaseType));
    return properties;
}
© www.soinside.com 2019 - 2024. All rights reserved.