我下载了一个包含类的程序集。该类公开了一个样式属性以允许自定义外观。是否有可能知道它允许创建样式对象的所有可能的 setter 属性是什么? (例如,通过查看 disaassmbly 等)
编辑:如果不可能,我也在寻找指南(例如,找到类公开的所有依赖属性,查看 PutStyle 的 MSIL 代码等)
最佳答案
当我看到你的问题时,我并不知道你的具体情况。再次查看后,听起来您正在尝试查找可以在对象的样式中设置哪些属性。这意味着您会对依赖对象上可用的非只读依赖属性感兴趣。当然,需要注意的是对象可能不一定使用所有属性来呈现自身。因此,如果您设置了一些属性并且似乎没有任何改变,请不要感到惊讶。
只需使用反射来搜索所有 DependencyProperty
字段并获取值(如果对象遵循声明依赖属性的约定)。您可以使用它来获取此类属性。
public static IEnumerable<DependencyProperty> GetDependencyProperties(DependencyObject owner)
{
var type = owner.GetType();
var flags = BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy;
return type.GetFields(flags)
.Where(fi => fi.FieldType == typeof(DependencyProperty))
.Select(fi => fi.GetValue(null))
.Cast<DependencyProperty>();
}
// get the non-readonly dependency properties
var writableDPs = GetDependencyProperties(myObject)
.Where(dp => !dp.ReadOnly);
关于c# - 是否有可能知道 wpf 中的样式中有哪些 setter 可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615434/