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
的出现方式吗?
谢谢
我想我可能已经找到了问题所在。看起来表达式正文在这些版本之间发生了变化。
我不太确定从哪里开始,所以这个问题可能会随着我收到反馈而变化。也就是说,我正在将我们的项目升级到 .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
的出现方式吗?
谢谢
我想我可能已经找到了问题所在。看起来表达式正文在这些版本之间发生了变化。