2012-09-13 38 views
59
來電或調用

表達式樹不包含使用 可選參數表達式樹不能包含使用可選參數

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

來電或調用當編輯有第二個,可爲空論據。

這是爲什麼?

回答

56

underlying expression tree API不支持可選參數。

對於IL編譯的代碼的C#編譯器插入的默認值在編譯時(硬編碼),因爲CLR不支持與既可以當沒有明確提供的參數可選參數調用方法。

+2

這是否在某種程度上包括過載?當我超負荷時,我得到了這個。像無效Blah(字符串a)和無效Blah(對象a)。當我試圖用對象MOQ調用版本時,它給了我這個錯誤。 – vbullinger

+4

完全支持重載,因爲特定的重載將被硬編碼到樹中。 – usr

+0

相當神祕的錯誤消息,但這個答案顯示的方式,我有可選參數與方法默認值是試圖嘲笑。 – vpalmu

14

嘗試使用Mock.setup模擬具有多個默認參數的方法時有相同的消息。我只需要在lambda中添加其他參數。

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

mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>() 
相關問題