C# 给Func起一个简短的名字<;类型1、类型2>;C中的序列#

C# 给Func起一个简短的名字<;类型1、类型2>;C中的序列#,c#,func,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; priv

我有这样的代码:

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;
private Func\u已启动;
私人职能进展;
私人职能完成;
发生私有函数错误;
私人职能取消;
我最好吃点像这样的东西:

typedef Func<Request, Response, byte[], string, string, Task> StatusUpdateAsyncCallback; // in C++ way.
private StatusUpdateAsyncCallback _started;
// and so on.
typedef Func status updateAsyncCallback;//用C++的方式。
private Status UpdateSyncCallback\u已启动;
//等等。
无法理解如何使用Func执行此操作。我习惯于委托(在这里我没有这个问题,因为我可以给任何委托一个唯一的名称),但现在不知道如何对Func声明重复相同的操作


我正在从简单的委托类型声明迁移,比如
委托任务状态updateAsyncCallback(请求请求、响应响应、字节[]数据、字符串帐户、字符串别名)
,因为我现在将依赖于一些特定于函数的功能(例如,可以创建一个扩展方法,该方法适用于具有一定数量参数的各种Func委托,而“经典”委托类型不兼容)。如果需要更多信息,请访问@Mant101解释中的,您可以使用
using
(在每个文件中):

使用StatusUpdateAsyncCallback=
系统功能;

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

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

使用StatusUpdateAsyncCallback=
系统功能;

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

您可以使用
创建类型别名,尽管它只应用于该文件,而不应用于程序集的其余部分

using StatusUpdateAsyncCallback = 
    System.Func<Request, Response, byte[], string, string, System.Threading.Tasks.Task>;
使用StatusUpdateAsyncCallback=
系统功能;

您可以使用
创建类型别名,尽管它只应用于该文件,而不应用于程序集的其余部分

using StatusUpdateAsyncCallback = 
    System.Func<Request, Response, byte[], string, string, System.Threading.Tasks.Task>;
使用StatusUpdateAsyncCallback=
系统功能;

至少对于相同的源文件,这将起作用:

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

关键点是在使用指令(
System.Func
System.Threading.Tasks.Task
)时始终提供完整的类型名。早期的
使用System.Threading.Tasks
使用System
声明无效。

至少对于相同的源文件,这将起作用:

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

关键是在using指令(
System.Func
System.Threading.Tasks.Task
)中始终提供完整的类型名早期的
使用System.Threading.Tasks
使用System
声明没有效果。

是的,我一开始确实尝试过,但一直没有成功。根据您的建议,我再次尝试,但仍然得到“找不到类型或命名空间Func”。我也尝试了使用较少的参数(如使用StatusUpdateAsyncCallback=Func;
).但是,天哪,我终于让它工作了,结果是使用了完整的类型名系统。Func总是需要的,在源代码的开头使用系统是不够的。@Alex类型别名总是需要完全限定的类型名。它们独立于可能存在的任何其他使用。是的,我一开始就尝试过,但一直没有成功。根据您的建议,我再次尝试,但仍然得到“找不到类型或命名空间Func”。我也尝试使用较少的参数(如使用StatusUpdateAsyncCallback=Func;
).但是,天哪,我终于让它工作了,结果是使用了完整的类型名系统。Func总是需要的,在源代码的开头使用系统是不够的。@Alex类型别名总是需要完全限定的类型名。它们独立于可能存在的任何其他用法。