仅在构造函数中设置类通用值

Mat*_*har 3 .net c# generics

有没有办法在构造函数中设置类的泛型类型(T),但不在声明中?

public class Gen<T>
{
}

public class Da
{
}

public class Program
{
    public static Gen<?> gen;

    public static void Main(string[] args)
    {
        gen = new Gen<Da>();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*lly 7

如果我正确理解您的要求,最简单的方法是使用非通用接口:

interface IGen { }
Run Code Online (Sandbox Code Playgroud)

那么你的泛型类可以是:

class Gen<T> : IGen { }
Run Code Online (Sandbox Code Playgroud)

用法是:

IGen objectGen = new Gen<object>();
IGen intGent = new Gen<int>();
Run Code Online (Sandbox Code Playgroud)