c# - 为 C# 中的 Func<Type1, Type2> 序列提供简称

标签 c# func

我有这样的代码:

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;

我最好有这样的东西:

typedef Func<Request, Response, byte[], string, string, Task> StatusUpdateAsyncCallback; // in C++ way.
private StatusUpdateAsyncCallback _started;
// and so on.

无法弄清楚如何使用 Func 执行此操作。我习惯于委托(delegate)(我没有遇到这个问题,因为我可以为任何委托(delegate)指定一个唯一的名称)但现在不知道如何为 Func 声明重复相同的名称。

我正在从委托(delegate)类型的简单声明迁移,例如 delegate Task StatusUpdateAsyncCallback(Request req, Response resp, byte[] data, string account, string alias) 因为我现在依赖一些特定于 Func 的能力(例如,可以创建一个扩展方法,该方法适用于具有一定数量参数的所有类型的 Func 委托(delegate),而“经典”委托(delegate)类型以这种方式不兼容)。如果需要更多信息,可以在@Mant101 的解释中找到 How to write extension method which will make invocation list members in multicast C# delegate run sequentially?

最佳答案

您可以使用using(在每个文件中):

using StatusUpdateAsyncCallback = 
      System.Func<Request, Response, byte[], string, string, System.Threading.Tasks.Task>;

所有类型名称都应该是完全限定的。

关于c# - 为 C# 中的 Func<Type1, Type2> 序列提供简称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41768633/

相关文章:

c# - 在 C# 中使用泛型和 Func 避免代码重复的最佳方法

c# - 异步服务器端 TCP/IP

c# - 更改 JSON 文件中的值(写入文件)

pointers - 如何使用golang将结构的方法作为参数传递给另一个函数

swift - #selector 与闭包不兼容?

c# - 为什么从 Expression<Func<>> 创建的 Func<> 比直接声明的 Func<> 慢?

c# - 在一种方法中使用在另一种方法中启动的类

c# - c# 中的 GetEnumerator() 是否返回副本或迭代原始源?

c# - 如何将 DataTrigger 值设置为常量字段?

c# - 如何使用 Func<> 更新对象属性?