2013-06-18 42 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

相关问题