ChatGPT解决这个技术问题 Extra ChatGPT

An expression tree may not contain a call or invocation that uses optional arguments

An expression tree may not contain a call or invocation that uses optional arguments

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

Where edit had a second, nullable argument.

Why is this?


d
ds4940

Had the same message when trying to use Mock.setup to mock a method with multiple default parameters. I just had to add the additional parameters in the lambda.

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

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

Depending on use case also ...x.someMethod(default,default)... can be used.
u
usr

The underlying expression tree API does not support optional arguments.

For IL-compiled code the C# compiler inserts the default values at compile time (hard-coded), because the CLR does not support calling methods with optional arguments either when the arguments are not provided explicitly.


Does this somehow include overloads? I was getting this when I made an overload. Something like void Blah(string a) and void Blah(object a). When I tried to MOQ out a call to the version with object, it gave me this error.
Overloads are fully supported in the sense that a particular overload will be hard-coded into the tree.
Pretty cryptic error message, but this answer showed the way, I had optional parameter with default value on the method is was trying to mock.
R
Rakesh

Error: 'an exception tree may not contain a call or invocation that uses option arguments'

Why: Because you are not providing the optional parameters when calling the method. Mainly you get this with .net core when using IAsyncProxy service object.

Fix: Pass all the optional parameters value, you may use default value if you.


Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.