我正在使用WPF应用程序,并且我根据以下代码对控件进行了验证。
var targetProperty = typeof(BindingExpression).GetProperty("TargetProperty",BindingFlags.Instance | BindingFlags.NonPublic).GetValue(value, null) as DependencyProperty;
它在框架4.0中运行良好。
但是如果我安装框架4.5,上面的代码将不起作用,因为
typeof(BindingExpression).GetProperty("TargetProperty",BindingFlags.Instance | BindingFlags.NonPublic) is null.
为什么这种行为基于不同版本的框架?上述方法是否有任何变化。
Sreyas MN
答案 0 :(得分:0)
MSDN文档正好相反:.NET 4.5 BindingExpressionBase
BindingExpression
继承自TargetProperty
,但.NET 4.0中没有该属性。你确定它不是相反吗?似乎该属性已添加,或至少在.NET 4.5中公开。
也许您应该将.NET 4.5的BindingFlags
更改为BindingFlags.Instance | BindingFlags.Public
,而不是快速#ifdef
。
无论如何,在.NET框架的各个版本上依赖私有属性(或任何私有成员)绝不是一个好主意。