我的团队正在将从.NET 4.0定位到4.6.2的应用程序升级。是的,晚会晚了,但比从未晚。.NET 4和.NET 4.6.2之间的表达体差异
在我们的应用程序中,有一个扩展方法从表达式返回返回方法的MethodInfo。换句话说,如果我们有:
public class Foo
{
public void DoSomething() { }
}
,然后有一个表达
Expression<Func<Foo, Action>> = f => f.DoSomething;
那么我们的扩展方法将返回方法的MethodInfo的DoSomething的()
中的代码工作很大.NET 4.0,但在.NET 4.6.2中不起作用。我已经改变了代码的工作方式,但是我的问题是没有人知道.NET 4.5,4.5.1,4.5.2,4.6,4.6.1和4.6.2的发行说明会记录在哪里?我已经多次阅读并搜遍了他们,没有任何东西。
这些发行说明我一直在寻找通过:
- https://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/dn458352(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/dn720543(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/dn833127(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/mt620033(v=vs.110).aspx
- https://msdn.microsoft.com/en-us/library/mt712575(v=vs.110).aspx
当你比较调试时的局部变量,你可以看到表达式的方法体.NET 4.0和4.6.2之间的区别:
我知道.NET引入了这样的方法;我对变更记录的位置感兴趣,而不是解决方案(我已经拥有)。
在此先感谢您的帮助!
是的,因为在你的例子中你正在使用一个委托,并改变了如何访问它们的api。这里有一个关于我最喜欢的地方的问题,但我正在用手机。但你可以将它改为'Expression> x = f => f.DoSomething();并以这种方式访问MethodInfo(这应该是更好的) –
pinkfloydx33
这里的答案之一应该有所帮助,尽管你应该尝试这样做一个'Expression>''而不是'Expression >'http://stackoverflow.com/a/26976055/491907您正在尝试使用一个基本上是委托的方法组,并且您必须执行一些额外的“解包“以获得方法 –
pinkfloydx33
也为了具体回答你关于文档的问题,这个变化在4.5版本中出现了,但我怀疑这被明确记录为它对系统的滥用。如果有任何事情你会发现它与'Delegate's或者'MethodInfo.CreateDelegate'有关,它就是它被改为使用 – pinkfloydx33