在C#</t>中定义一个类型为M <t>的通用参数的方法

时间:2014-05-21 08:32:09

标签: c# generics

我正在努力解决这个问题: 我试图让DoSomething方法接受从GenericClass&lt;派生的所有类。 T>无需将GenericDerived类拆除为&lt; GenericDerived,Base&gt;。

class Program
{
    static void Main(string[] args)
    {
        SomeClass.DoSomething<GenericDerived>(new GenericDerived()); //Still not compiler friendly
    }
}

class Base { }

class GenericClass<T> where T : Base { }

class GenericDerived : GenericClass<Base> { }

class SomeClass
{
    public static void DoSomething<M, B>(M instance)
        where B : Base
        where M : GenericClass<B>
    {
        // Do something...
    }
}

1 个答案:

答案 0 :(得分:4)

您的示例中没有名为T的类型参数。您还需要添加它及其约束。

class SomeClass
{
    public void DoSomething<M,T>(M instance) where T : Base 
                                             where M : GenericClass<T>
    {
       // Do something...
    }
}