這個問題讓我瘋狂,因爲過去幾個小時。參數類型'lambda表達式'不能分配給參數類型'System.Action'
我有2個版本,我寫的同一屬性的:
public IMvxCommand ButtonClickedCommand
{
get
{
return new MvxCommand(() =>
{
Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://google.com");
});
}
}
而且
public IMvxCommand ButtonClickedCommand
{
get
{
return new MvxCommand((Action) (() =>
{
Mvx.Resolve<IMvxWebBrowserTask>().ShowWebPage("http://google.com");
}));
}
}
這兩種方法都是正確的,這兩個正在運行按鈕被點擊的時候,他們做什麼,他們有做。但第一個顯示我:
第二:
如果沒有它的解決方案,它是某種錯誤,我會放棄它的,但我正在研究的另一個項目也在使用v3庫,並且沒有這樣的問題。
盧卡斯
//編輯
我想添加更多詳情的問題,這樣或許有助於找到問題的原因。
如果我爲自己創建的方法編寫lambda表達式,那麼lambda表達式一般都沒有問題。例如:
public void fun()
{
fun2(() =>
{
GetType();
});
}
public void fun2(Action action)
{
}
此片段上方使用針對所需操作參數lambda表達式,因此情況非常類似於從第一片段中的一個,並且還沒有問題這一點。問題是,如果我將lambda表達式傳遞給MvxCommand對象的構造函數,我將不會明確地將其轉換爲Action。
暫停R#確實使警告/錯誤消失。奇怪的是,我寫的方法並沒有顯示警告。我將把這個信息標記爲現在的答案。我會試着調查這個問題,如果我遇到問題的根源,我會回覆。謝謝Stuart。 – Lucas