Дерево выражений может не содержать вызов или вызов, который использует необязательные аргументы
Дерево выражений может не содержать вызов или вызов, который использует необязательные аргументы
return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
Если у редактирования был второй аргумент с нулевым значением.
Почему это?
Ответы
Ответ 1
базовый API дерева выражений не поддерживает необязательные аргументы.
Для IL-скомпилированного кода компилятор С# вставляет значения по умолчанию во время компиляции (жестко запрограммированные), поскольку CLR не поддерживает вызовы с необязательными аргументами, когда аргументы не указаны явно.
Ответ 2
Было такое же сообщение при попытке использовать Mock.setup для макета метода с несколькими параметрами по умолчанию. Мне просто нужно было добавить дополнительные параметры в лямбду.
void someMethod(string arg1 = "", string arg2 = "")
mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))