我得到了一个我创建的自定义DependencyObjects的集合。但我认为无论DependencyObject来自哪里都无关紧要。问题是我想要它的属性列表,但是当我查看DependencyObject的C#doc时,我找不到任何与属性相关的东西……:/
我该怎么做呢?
(注意:我有字段(string、int等)。)作为我的DependencyObject中的属性,我也得到了DependencyProperties。最后,我只想列出DependencyProperties,但这不是一项义务!)
我是法国人-_- (也为我的总统叫喊……)
发布于 2011-09-27 22:17:20
您可以使用反射来实现这一点,因为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标志。
https://stackoverflow.com/questions/7570547
复制相似问题