c# - Action Type C#可以返回一个类型吗?
问题描述
我正在查看代码,我看到它说
public Action<MainViewModel, MainViewModel> SetView { get; }
这是否表明该操作SetView
正在接收某些内容?我以为动作类型总是无效的?
另外,这(ViewModel.SetView)
部分是什么意思?是那种类型转换为 aSetView
吗?
SetView = new Action<MainViewModel,MainViewModel>(ViewModel.SetView)
解决方案
Action
type 只能传递参数。如果你想返回一个值,那么你可以使用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 的函数?
推荐阅读
- google-api - 加载 ALLOW-FROM 时遇到的无效“X-Frame-Options”标头不是可识别的指令。标题将被忽略
- types - 为什么这个 OCaml 仿函数不能识别结构类型?
- android - 将 JSON 嵌套到颤动中
- php - 按类别搜索产品
- python - 使用 pytest 导入会破坏 VSCode 测试
- c++ - 需要帮助我如何获得不同的输出
- android - 需要权限时 IDE 的问题
- python - 如何在不中断我的 tkinter 主循环的情况下运行一个函数,同时将该函数的信息发送到我的主循环中的小部件?
- c++ - 如何找出发生浮点异常的位置?
- sql - 为每个 ID 选择具有最新日期的数据