我正在努力解决这个问题: 我试图让DoSomething方法接受从GenericClass<派生的所有类。 T>无需将GenericDerived类拆除为< GenericDerived,Base>。
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...
}
}
答案 0 :(得分:4)
您的示例中没有名为T的类型参数。您还需要添加它及其约束。
class SomeClass
{
public void DoSomething<M,T>(M instance) where T : Base
where M : GenericClass<T>
{
// Do something...
}
}