重载泛型类的构造函数,基于类型

use*_*166 2 c# generics constructor

我试图重载默认构造函数之外的构造函数,只会调用int类型.我得到的最接近的是这个.

如果不可能,那为什么?

class Program
{
    static void Main()
    {
        //default construcotr get called
        var OGenerics_string = new Generics<string>();

        //how to make a different construcotr for type int
        var OGenerics_int = new Generics<int>();
    }

    class Generics<T>
    {
        public Generics()
        {
        }
        // create a constructor which will get called only for int
    }
}
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 7

根据泛型类型重载构造函数(或任何方法)是不可能的 - 但您可以创建工厂方法:

class Generics<T>
{
    public Generics()
    {
    }

    public static Generics<int> CreateIntVersion()
    {
          /// create a Generics<int> here
    }
}
Run Code Online (Sandbox Code Playgroud)

除此之外,你必须使用反射检查共享构造函数中的泛型类型并分支代码,这将是相当丑陋的.