我有这样的代码:
private Func<Request, Response, byte[], string, string, Task> _started;
private Func<Request, Response, byte[], string, string, Task> _progress;
private Func<Request, Response, byte[], string, string, Task> _completed;
private Func<Request, Response, byte[], string, string, Task> _errorOccurred;
private Func<Request, Response, byte[], string, string, Task> _cancelled;
Run Code Online (Sandbox Code Playgroud)
我最好有类似的东西:
typedef Func<Request, Response, byte[], string, string, Task> StatusUpdateAsyncCallback; // in C++ way.
private StatusUpdateAsyncCallback _started;
// and so on.
Run Code Online (Sandbox Code Playgroud)
无法弄清楚如何用 Func 做到这一点。我习惯于委托(我没有这个问题,因为我可以为任何委托指定一个唯一的名称)但现在无法弄清楚如何为 Func 声明重复相同的内容。
我正在从委托类型的简单声明中迁移,delegate Task StatusUpdateAsyncCallback(Request req, Response resp, byte[] data, string account, string alias)因为我现在将依赖于一些特定于 Func 的能力(例如,可以制作一个扩展方法,该方法适用于具有一定数量参数的所有类型的 Func 委托,而“经典”委托类型以这种方式不兼容)。如果需要更多信息,可以在@Mant101 解释中找到如何编写扩展方法,该方法将使多播 C# 委托中的调用列表成员按顺序运行?
您可以使用using(在每个文件中):
using StatusUpdateAsyncCallback =
System.Func<Request, Response, byte[], string, string, System.Threading.Tasks.Task>;
Run Code Online (Sandbox Code Playgroud)
所有类型名称都应该是完全限定的。
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |