typeof(BindingExpression).GetProperty()在.Net Framework 4.5中返回null

时间:2014-01-14 11:59:08

标签: c# .net wpf

我正在使用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

1 个答案:

答案 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框架的各个版本上依赖私有属性(或任何私有成员)绝不是一个好主意。