ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

为什么是这样?


d
ds4940

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

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

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

根据用例,也可以使用 ...x.someMethod(default,default)...。
u
usr

underlying expression tree API 不支持可选参数。

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


这是否以某种方式包括重载?当我超载时,我得到了这个。像 void Blah(string a) 和 void Blah(object a) 这样的东西。当我尝试最小起订量调用带有对象的版本时,它给了我这个错误。
完全支持重载,因为特定的重载将被硬编码到树中。
非常神秘的错误消息,但这个答案显示了方法,我有可选参数,该方法的默认值是试图模拟。
R
Rakesh

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

为什么:因为您在调用方法时没有提供可选参数。主要是你在使用 IAsyncProxy 服务对象时通过 .net 核心获得这个。

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


您的答案可以通过额外的支持信息得到改进。请edit添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以找到有关如何写出好答案的更多信息in the help center

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅