Lazy Delegate Creator 在升级到 .net 4.6.2 时中断

Lazy Delegate Creator breaks when upgrading to .net 4.6.2

我不太确定从哪里开始,所以这个问题可能会随着我收到反馈而变化。也就是说,我正在将我们的项目升级到 .net 4.6.2。更新 nuget 包并解决依赖性问题后,我终于可以构建了。但是,在启动期间,我现在遇到无法解决的异常。由于空值,异常稍后发生,但我已将问题跟踪到参数如何进入方法的更改。

这是参数不同的方法。参数 expression 因 .net 版本而异。

public static IInterfaceNameChanged CreateScreenRule<TInstance>(Expression<Func<TInstance, ScreenRule>> expression)
    where TInstance : new()
{
    return CreateNewable(expression, null, RuleSetBase.RuleSetTypes.Req);
}

这是对 CreateScreenRule() 的调用:

RuleFactory.CreateScreenRule<VehicleDriverAssignment>(i => i.VehicleDriverAssignments)

以及我们尝试创建的方法的签名:

public void VehicleDriverAssignments(ScreenRuleContext args)
{...}

升级前: 表达式参数像这样进入方法:

i => Convert(CreateDelegate(RuleEngine.ScreenRule, i, Void VehicleDriverAssignments(RuleEngine.ScreenRuleContext)))

Post升级: 它进入这样的方法:

i => Convert(Void VehicleDriverAssignments(RuleEngine.ScreenRuleContext).CreateDelegate(RuleEngine.ScreenRule, i))

None 代码已更改,唯一更改的是升级和其他与升级相关的活动(nuget 升级、绑定重定向等)。

知道为什么升级 .net 从根本上改变了 expression 的出现方式吗?

谢谢

我想我可能已经找到了问题所在。看起来表达式正文在这些版本之间发生了变化。