表达式树可能不包含使用 可选参数

return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));

其中edit有第二个可空参数。

为什么会这样?


底层表达式树API不支持可选参数。

对于il编译的代码,c#编译器在编译时插入默认值(硬编码),因为当参数没有显式提供时,CLR也不支持调用带有可选参数的方法。


在尝试使用Mock时也有同样的信息。设置以模拟具有多个默认参数的方法。我只需要把额外的参数加到。

void someMethod(string arg1 = "", string arg2 = "")

mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))

错误:“异常树可能不包含使用选项参数的调用或调用”

原因:因为在调用方法时没有提供可选参数。主要是在使用IAsyncProxy服务对象时通过.net core得到这个。

修正:传递所有可选参数值,你可以使用默认值,如果你。


我通过在可选参数中添加一个值来处理它。它工作。当我在进行设置时尝试模拟时,也发生了同样的事情。