Я постарался сделать достаточно простой пример: 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 >
?
Дошел до этой дичи сам, изучая дженерик типы. Насколько данная конструкция вообще приемлима и жизнеспособна ? Какие существуют практики ?