【问题标题】:Get DependencyProperties using reflection (Type.GetProperties)?使用反射 (Type.GetProperties) 获取 DependencyProperties?
【发布时间】:2011-09-28 11:55:37
【问题描述】:

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

这是返回所有属性的代码:

propertyInfos = myType.GetProperties();

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

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

【问题讨论】:

  • 依赖属性有两个方面:作为真正依赖属性的静态字段(类型为DependencyProperty)和返回值的外观属性那个静态场。你想退回什么?

标签: c# dependency-properties getproperties


【解决方案1】:

依赖属性是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;
}

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 2011-07-25
    • 2012-08-24
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多