Я пытаюсь сделать это: я пытаюсь, чтобы метод 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...
}
}
У вас нет параметра типа T в вашем примере. Вам нужно добавить его и его ограничения.
class SomeClass
{
public void DoSomething<M,T>(M instance) where T : Base
where M : GenericClass<T>
{
// Do something...
}
}