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

bev*_*qua 125 c# asp.net-mvc-3

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

return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
Run Code Online (Sandbox Code Playgroud)

编辑有第二个可空的参数.

为什么是这样?

ds4*_*940 106

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

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

mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))
Run Code Online (Sandbox Code Playgroud)

  • 根据用例,还可以使用...`x.someMethod(default,default)`...。 (16认同)

usr*_*usr 96

基础表达式树API不支持可选参数.

对于IL编译的代码,C#编译器在编译时插入默认值(硬编码),因为当未明确提供参数时,CLR不支持使用可选参数调用方法.

  • 在特定的重载将被硬编码到树中的意义上,完全支持过载. (4认同)
  • 这会以某种方式包含重载吗?当我超载时,我得到了这个.像void Blah(字符串a)和void Blah(对象a)之类的东西.当我尝试使用对象MOQ out对该版本的调用时,它给了我这个错误. (2认同)

小智 6

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

原因:因为您在调用该方法时没有提供可选参数。主要是在使用 IAsyncProxy 服务对象时通过 .net core 获得此信息。

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