表达式树可能不包含使用的调用或调用 可选参数
return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
编辑有第二个可以为空的参数。
为什么会这样?
答案 0 :(得分:77)
underlying expression tree API不支持可选参数。
对于IL编译的代码,C#编译器在编译时插入默认值(硬编码),因为当未明确提供参数时,CLR不支持使用可选参数调用方法。
答案 1 :(得分:71)
尝试使用Mock.setup模拟具有多个默认参数的方法时有相同的消息。我只需要在lambda中添加其他参数。
void someMethod(string arg1 = "", string arg2 = "")
mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))