Дерево выражений может не содержать вызова или вызова, использующего необязательные аргументы


дерево выражений может не содержать вызова или вызова, который использует необязательные аргументы

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

где edit имел второй, нулевой аргумент.

почему это?

2 80

2 ответа:

The базовый API дерева выражений не поддерживает необязательные аргументы.

для Il-скомпилированного кода компилятор C# вставляет значения по умолчанию во время компиляции (жестко закодированные), поскольку среда CLR не поддерживает вызов методов с необязательными аргументами, если аргументы не указаны явно.

было то же самое сообщение при попытке использовать макет.настройка для макета метода с несколькими параметрами по умолчанию. Мне просто нужно было добавить дополнительные параметры в лямбду.

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

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