Определите метод с универсальным параметром типа M <T> в C #

1

Я пытаюсь сделать это: я пытаюсь, чтобы метод 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...
    }
}
Теги:
generics

1 ответ

4
Лучший ответ

У вас нет параметра типа T в вашем примере. Вам нужно добавить его и его ограничения.

class SomeClass
{
    public void DoSomething<M,T>(M instance) where T : Base 
                                             where M : GenericClass<T>
    {
       // Do something...
    }
}
  • 0
    Спасибо - я не знаю, почему я пропустил это ... чувствую себя глупо ... лол. Приму ваш ответ, если через несколько минут
  • 0
    @Nims Это случается со всеми нами :)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню