gpt4 book ai didi

c# - .NET 4 和 .NET 4.6.2 之间的表达式主体差异

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:09 25 4
gpt4 key购买 nike

我的团队正在将应用程序从目标 .NET 4.0 升级到 4.6.2。是的,派对迟到了,但迟到总比不到好。

在我们的应用程序中,有一个扩展方法可以从表达式返回返回方法的 MethodInfo。换句话说,如果我们有:

public class Foo
{
public void DoSomething() { }
}

然后有一个表情

Expression<Func<Foo, Action>> = f => f.DoSomething;

然后我们的扩展方法将返回方法 DoSomething() 的 MethodInfo

该代码在 .NET 4.0 中运行良好,但在 .NET 4.6.2 中不起作用。我已经更改了代码以使其正常工作,但我的问题是有人知道 .NET 4.5、4.5.1、4.5.2、4.6、4.6.1 和 4.6.2 的发行说明中的​​哪个位置会对此进行记录吗?我已经多次阅读和搜索它们,但一无所获。

这些是我一直在浏览的发行说明:

在调试时比较局部变量时,您可以看到表达式的方法体在 .NET 4.0 和 4.6.2 之间有何不同:

.NET 4.0: enter image description here

.NET 4.6.2: enter image description here

我知道 .NET 引入了执行此操作的方法;我感兴趣的是更改记录在何处,而不是解决方案(我已经有了)。

预先感谢我们的帮助!

最佳答案

MethodInfo.CreateDelegate()编译器使用的方法而不是 Delegate.CreateDelegate()随 .NET 4.5 引入

C# 表达式的记录行为

Expression<Func<Foo, Action>> e = f => f.DoSomething;

是它将创建一个表示 Func<Foo, Action> 的表达式如果编译和调用将采用 Foo并返回 Action那叫.DoSomething()在那Foo .这种行为没有改变。由于记录的行为没有变化,所以很可能没有关于变化的文件。 (如果已知此类更改会导致问题,则会记录此类更改,但并非总是如此)。

关于c# - .NET 4 和 .NET 4.6.2 之间的表达式主体差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com