Ein Ausdrucksbaum darf keinen Aufruf oder Aufruf enthalten, der optionale Argumente verwendet

Ein Ausdrucksbaum darf keinen Aufruf oder Aufruf enthalten, der optionale Argumente verwendet

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

Wo hatte edit ein zweites Argument, das mit Nullen belegt werden konnte.

Warum ist das?

Die zugrunde liegende API für Ausdrucksbaum unterstützt keine optionalen Argumente.

Bei mit IL kompiliertem Code fügt der C # -Compiler die Standardwerte zur Kompilierzeit ein (hart codiert), da die CLR keine aufrufenden Methoden mit optionalen Argumenten unterstützt, auch wenn die Argumente nicht explizit angegeben werden.

Hatte dieselbe Meldung, als sie versuchte, Mock.setup zu verwenden, um eine Methode mit mehreren Standardparametern zu verspotten. Ich musste nur die zusätzlichen Parameter im Lambda hinzufügen.

 void someMethod(string arg1 = "", string arg2 = "") mockedObject.Setup(x => x.someMethod(It.IsAny(), It.IsAny()