c# - C# 模式匹配任务并获得它的价值
问题描述
我想知道如何模式匹配一个Task<T>
. 更具体地说,给定静态类型的变量object
如何获取其Result
属性。
基本上,给:
object obj = new Task<string>() // or maybe Task<IEnumerable<...>>
object result = obj... // obj.Result?
解决方案
最简单的方法是使用动态类型:
dynamic obj = new Task<string>(); // etc
object result = obj.Result;
您总是可以先检查是否obj
是Task
某种类型的(使用非泛型Task
基类)。如果您真的非常想防范用户定义的Task
非 子类Task<T>
,您可以自己通过反射来做所有事情——但这会做更多的工作。
我通常不喜欢动态类型,如果可能的话,我会尽量避免陷入这种情况,但这应该可以正常工作。
推荐阅读
- ruby-on-rails - 如何使用rails表单中的文本从集合中选择对象
- dart - 单击图像样式应更改或图像应在颤动中更改的图像
- wxwidgets - How to calculate the scale factor for current window in WxWidgets?
- amazon-ec2 - 创建池时 AWS /dev/ 名称上的 ZFS
- azure - 在 Azure 中的 VNet 之间路由流量
- c# - How access from UI to DataAccess Objects? Using 3 name space
- python - 如何使用 Selenium 和 Python 定位以下 html 的元素
- web-services - 如何从 Flutter/Dart Soap Web 服务 asmx 调用中获取价值?
- java - 搜索多列数组列表?
- angular - 无法读取 ngOnInit() Angular7 上未定义的属性“id”