这个问题让我疯狂,因为过去几个小时。参数类型'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