Un arbre d’expression ne peut pas contenir d’appel ou d’invocation utilisant des arguments facultatifs

Un arbre d’expression ne peut pas contenir d’appel ou d’invocation utilisant des arguments facultatifs

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

Où edit avait un deuxième argument nullable.

Pourquoi est-ce?

L’ arborescence de l’expression sous-jacente ne prend pas en charge les arguments facultatifs.

Pour le code compilé par IL, le compilateur C # insère les valeurs par défaut au moment de la compilation (codé en dur), car le CLR ne prend pas en charge les méthodes d’appel avec des arguments facultatifs lorsque les arguments ne sont pas fournis explicitement.

Avait le même message en essayant d’utiliser Mock.setup pour simuler une méthode avec plusieurs parameters par défaut. Je devais simplement append les parameters supplémentaires dans le lambda.

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