Подтвердить что ты не робот

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

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

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

Если у редактирования был второй аргумент с нулевым значением.

Почему это?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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