如何传递给实现certan接口的泛型函数类类型?

myW*_*SON 3 .net c# .net-4.0

我想用这样的签名创建一个泛型函数:void funcName<T>()在哪里T需要是我想要的某个特定接口的实现.怎么做这样的检查?如何传递给实现certan接口的泛型函数类类型?

所以我创建了一些public interface IofMine {},我尝试创建一个类似的函数public static void funcName<T>() where T : IofMine { var a = new T},我很遗憾地得到:

错误:无法创建变量类型"T"的实例,因为它没有new()约束

我该怎样做才能使我的函数接收类型不仅是我想要的接口而且还有一个构造函数?

Dav*_*Yaw 5

为了要求泛型参数具有默认构造函数,请指定new()为泛型约束的一部分.

public static void funcName<T>() where T : IofMine, new()
{
    T a = new T();
}
Run Code Online (Sandbox Code Playgroud)

您只能使用它来要求默认(即无参数)构造函数.例如,您不能要求构造函数采用字符串参数.