我得到了我创建的自定义DependencyObjects的集合。但是我认为DependencyObject来自何处都没有关系。
问题是我想要列出其属性,但是当我在C#doc中查看DependencyObject时,找不到任何与属性相关的信息...:/

我该怎么做 ?

(nb:我在DependencyObject中将字段(字符串,int等)作为属性,我也得到了DependencyProperties。最后我只想列出DependencyProperties,但这不是义务!)

提前感谢我的语言,法语-_-
(也对我的总统很抱歉...)

最佳答案

您可以使用反射来完成此操作,因为DependencyProperties(通常是?)存储在DependencyProperty类型的公共静态字段中:

private static IEnumerable<DependencyProperty> GetDependencyProperties(DependencyObject o)
{
    return from field in o.GetType().GetFields(BindingFlags.Public |
                                               BindingFlags.FlattenHierarchy |
                                               BindingFlags.Static)
           where field.FieldType == typeof(DependencyProperty)
           select (DependencyProperty)field.GetValue(null);
}


它使用FlattenHierarchy返回所有DependencyProperties,包括在父类中定义的那些。如果只希望直接在o的类中定义DependencyProperties,则删除FlattenHierarchy标志。

关于c# - 列出DependencyObject的属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7570547/

10-09 16:38