@KislyFan
инженер, связист и просто любитель выпить

Наследование дженериков, как сделать правильно?

Я постарался сделать достаточно простой пример: lдва класса Foo и Boo "зависят" друг от друга.

public class Foo<T, U> where T : Boo<U, T> where U : Foo<T, U>
    {
        protected readonly T _some;
        public Foo(T some)
        {
            _some = some;
        }
    }

    public class Boo<T, U> where T : Foo<U, T> where U : Boo<T, U>
    {
        protected readonly T _some;
        public Boo(T some)
        {
            _some = some;
        }
    }


у каждого из классов есть классы-наследники

public class Too : Foo<Roo, Too>
    {
        public Too(Roo a) : base(a)
        {

        }
    }

    public class Roo : Boo<Too, Roo>
    {
        public Roo(Too b) : base(b)
        {
        }
    }


Есть ли синтаксическая возможность не указывать себя же в родителе public class Roo : Boo< Too, Roo > ?

Дошел до этой дичи сам, изучая дженерик типы. Насколько данная конструкция вообще приемлима и жизнеспособна ? Какие существуют практики ?
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
Это даже читать сложно, путаешься кто от кого зависит.
Ни разу подобного не видел, особенно в проде, и надеюсь не увижу :)

По дженерикам есть бесплатный доклад от Джефри Рехтера - https://youtu.be/H9mP0Ad3TtA?t=4666
День 1, Зал 1, доклад 1.
Он расскажет как они появились и зачем.

В целом дженерик удобен для задания шаблонов, и избежания "упаковок".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы