使用泛型属性创建泛型类

时间:2017-06-30 20:04:00

标签: c# generics

假设我有以下课程:

public class Class1<T> 
        where T : SubClass1, new()
{
    public T Item { get; protected set; }

    public Class1()
    {
        Item = new T();
    }
}

public class Class2<T> : Class1<T> 
    where T : SubClass1, new()
{
    public Class2()
    {
        Item = new T();
    }
}

public class SubClass1
{
    public string Text { get; protected set; }

    public SubClass1()
    {
        Text = "SubClass1";
    }
}

public class SubClass2 : SubClass1
{
    public SubClass2()
    {
        Text = "SubClass2";
    }
}

现在我想要一个通用方法来创建这些类,所以我这样做:

public T GetInstance<T, K>() 
            where T : Class1<K>, new()
            where K : SubClass1, new()
{
    return new T();
}

但如果我称之为该方法,我必须这样做:

GetInstance<Class2<SubClass1>, SubClass1>();

所以我指定两次SubClass1来调用该方法。我的问题是,有一种更简洁的方法可以做到这一点:

GetInstance<Class2<SubClass1>>();

因此,请避免两次指定SubClass1?我错过了什么吗?

0 个答案:

没有答案