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

C# 在.Net Framework 4.5中,typeof(BindingExpression).GetProperty()返回null,c#,.net,wpf,C#,.net,Wpf,我正在使用WPF应用程序,并基于以下代码对控件进行了验证 var targetProperty = typeof(BindingExpression).GetProperty("TargetProperty",BindingFlags.Instance | BindingFlags.NonPublic).GetValue(value, null) as DependencyProperty; 它在Framework4.0中运行良好 但是如果我安装的是Framework4.5,上面的代码将无法工

我正在使用WPF应用程序,并基于以下代码对控件进行了验证

var targetProperty = typeof(BindingExpression).GetProperty("TargetProperty",BindingFlags.Instance | BindingFlags.NonPublic).GetValue(value, null) as DependencyProperty;
它在Framework4.0中运行良好

但是如果我安装的是Framework4.5,上面的代码将无法工作,因为

typeof(BindingExpression).GetProperty("TargetProperty",BindingFlags.Instance | BindingFlags.NonPublic) is null.
为什么这种行为基于不同版本的框架?上述方法是否有任何变化


Sreyas MN

MSDN文档说明了完全相反的情况:在
BindingExpressionBase
中,它继承自,有一个名为的属性,但不在中。你确定不是相反吗?该属性似乎已经添加,或者至少在.NET4.5中公开

也许您应该将.NET 4.5的
BindingFlags
更改为
BindingFlags.Instance | BindingFlags.Public
,而可以使用快速的
#ifdef
来完成

无论如何,在.NET framework的各个版本中依赖私有属性(或任何私有成员)从来都不是一个好主意。

首先是
public
,所以您应该使用
BindingFlags.public
其次,根据MSDN的说法,它是.NET 4.5的新特性,所以它在.NET 4.0中是如何工作的