You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于MvvmCross文档中MvxCommand代码示例编译错误的修正疑问

问题解答:MvxCommand编译错误的修复方案

你完全正确,这个示例确实应该修改为泛型版本的MvxCommand<string>来解决编译错误,下面详细解释原因:

错误原因分析

非泛型的MvxCommand构造函数默认接受的是无参数的Action委托,也就是不需要传入任何参数的方法。而原代码中的lambda表达式day => DoAction(day)是一个带参数的委托(接受一个string类型的参数),这就和非泛型MvxCommand期望的委托类型不匹配,所以编译器会抛出“Delegate 'Action' does not take 1 arguments”的错误。

正确的写法

要支持带参数的命令,必须使用MvvmCross提供的泛型版本MvxCommand<T>,其中T是你要传递的参数类型。如果你的DoAction方法接受的是string类型的参数,那么正确的代码应该是:

new MvxCommand<string>(day => DoAction(day));

如果DoAction的参数类型不是string(比如是DateTime或者自定义类型),只需要把泛型参数替换成对应的类型即可,比如:

// 假设DoAction接受DateTime类型参数
new MvxCommand<DateTime>(selectedDay => DoAction(selectedDay));

额外说明

泛型MvxCommand<T>的设计就是为了处理需要传递参数的命令场景,它内部会绑定Action<T>委托,完美匹配带单个参数的方法或lambda表达式。

内容的提问来源于stack exchange,提问作者M. Feldman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:02:41