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