自从过去几个小时以来,这个问题让我发疯了。
我写的相同属性有 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 表达式,一般来说没有问题。例如:
public void fun()
{
fun2(() =>
{
GetType();
});
}
public void fun2(Action action)
{
}
上面的这个片段使用 lambda 表达式作为所需的 Action 参数,因此情况与第一个片段中的情况非常相似,但没有问题。问题是,如果我将 lambda 表达式传递给 MvxCommand 对象的构造函数,我不会显式地转换为 Action。