Action Type C#可以return一个类型吗?

Action Type C# can return a type?

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

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

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

此外,(ViewModel.SetView) 部分是什么意思?该类型是否转换为 SetView

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

Action类型只能传递参数。如果你想return一个值,那么你可以使用Func<>.

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

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

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

为了回答您的进一步问题,这是 Actionprototype:

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

SetView = new Action(ViewModel.SetView);

这是在 属性 SetView 上调用 set 方法,其中一个方法 (ViewModel.SetView) 接受 2 个 MainViewModel 参数。

是否可以在一个 class 中有一个名为 SetView 的 属性 和在视图模型 class 中有一个名为 SetView 的函数?