2013-06-18 130 views
0

這個問題讓我瘋狂,因爲過去幾個小時。參數類型'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。

回答

0

我懷疑這有什麼用mvvmcrossmvvm

此錯誤信息快速搜索表明,這是更可能下降到工具 - 尤其是R# - 例如,查看點擊喜歡:

如果您正在運行如R#的任何信息,並且您刪除或禁用它們,那麼這可能會刪除該警告。


如果禁用它們有幫助,那麼我會建議要求擴展供應商(s)支持。

如果禁用它們並沒有幫助,那麼我會建議調查兩個項目之間存在問題的差異/不會發生 - 這將有望得出答案。

+0

暫停R#確實使警告/錯誤消失。奇怪的是,我寫的方法並沒有顯示警告。我將把這個信息標記爲現在的答案。我會試着調查這個問題,如果我遇到問題的根源,我會回覆。謝謝Stuart。 – Lucas

相關問題