我得到了我创建的自定义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/