首页 > 解决方案 > Action Type C#可以返回一个类型吗?

问题描述

我正在查看代码,我看到它说

public Action<MainViewModel, MainViewModel> SetView { get; }

这是否表明该操作SetView正在接收某些内容?我以为动作类型总是无效的?

另外,这(ViewModel.SetView)部分是什么意思?是那种类型转换为 aSetView吗?

SetView = new Action<MainViewModel,MainViewModel>(ViewModel.SetView)

标签: c#delegatesaction

解决方案


Actiontype 只能传递参数。如果你想返回一个值,那么你可以使用Func<>.

在您的示例中,SetView是一个带有 的属性Action<MainViewModel,MainViewModel>,这意味着该属性应设置为接受 2 个 MainViewModels 作为参数的方法,例如:

void MyMethod(MainViewModel model1, MainViewModel model2)
{ ... }

除了你的只是一个吸气剂,所以我假设它是在构造函数中设置的。

为了回答您的进一步问题,这是Action<T1,T2>的原型:

public delegate void Action<in T1,in T2>(T1 arg1, T2 arg2);

SetView = new Action<MainViewModel,MainViewModel>(ViewModel.SetView);

这是调用属性 SetView 上的 set 方法,方法 (ViewModel.SetView) 采用 2 个 MainViewModel 参数。

您是否有可能在一个类中有一个名为 SetView 的属性,而在视图模型类中有一个名为 SetView 的函数?


推荐阅读