expression式树可能不包含使用可选参数的调用或调用

expression式树可能不包含使用可选参数的调用或调用

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

编辑有一个可为空的参数。

为什么是这样?

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

对于IL编译的代码,C#编译器在编译时插入默认值(硬编码),因为CLR不支持调用具有可选参数的方法,或者在没有显式提供参数的情况下。

尝试使用Mock.setup模拟具有多个默认参数的方法时有相同的消息。 我只需要在lambda中添加额外的参数。

 void someMethod(string arg1 = "", string arg2 = "") mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()