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

时间:2012-09-13 19:39:20

标签: c# asp.net-mvc-3

  

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

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

编辑有第二个可以为空的参数。

为什么会这样?

2 个答案:

答案 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>()))