首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactiveUI:如何正确地将参数传递给ReactiveCommand.CreateFromTask

ReactiveUI:如何正确地将参数传递给ReactiveCommand.CreateFromTask
EN

Stack Overflow用户
提问于 2017-01-25 12:41:28
回答 1查看 4.7K关注 0票数 6

当执行绑定到控件的ViewModel时,我希望将一个参数从视图传递给ReactiveCommand。参数应该是IJcUser类型的

所以我把这个命令定义如下:

代码语言:javascript
复制
public ReactiveCommand<IJcUser, Unit> UserTouchCommand;

UserTouchCommand = ReactiveCommand.CreateFromTask(user => RootViewModel.DisplayUserProfile(user));

DisplayUserProfile的签名看起来像

Task DisplayUserProfile(IJcUser user);

但是编译器会抱怨,因为user来自CancelationToken类型,而不是预期的IJcUser

我终于找到了一个解决方案,但不明白为什么第一种方法不起作用。

代码语言:javascript
复制
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(RootViewModel.DisplayUserProfile);
EN

Stack Overflow用户

回答已采纳

发布于 2017-01-25 13:36:20

我终于找到了一个解决方案,但不明白为什么第一种方法不起作用。

因为您使用了ReactiveCommand.CreateFromTask方法的错误重载。委托user => RootViewModel.DisplayUserProfile(user)可以是Func<CancellationToken, Task>Func<IJcUser, Task>。除非您告诉编译器,否则编译器无法知道是哪一个:

代码语言:javascript
复制
Func<IJcUser, Task> x = user => DisplayUserProfile(user);
UserTouchCommand = ReactiveCommand.CreateFromTask(x);

或者,您可以明确说明类型参数:

代码语言:javascript
复制
UserTouchCommand = ReactiveCommand.CreateFromTask<IJcUser>(DisplayUserProfile);
票数 10
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41851919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档