我有这样的代码:
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/