Это проблема, которая кажется супер базовой, но я до сих пор не могу найти способ ее очистить. Когда у меня есть простое наследование как B и C наследовать отИзбегайте множества бросков в дереве наследования
A
|
|-----|
B C
Допустим, это интерфейс, как:
public interface A
{
List<A> Children { get; }
}
Мой вопрос: Когда я получил через B.Children
я должен бросить его B
каждый раз, когда я хочу использовать его особенности. Есть ли способ иметь список детей без объявления детей в листьях дерева наследования?
Прецизионность: ребенок всегда имеет тот же тип, что и его родительский (или подтип). И дерево может пойти глубже. В качестве примера рассмотрим систему пользовательского интерфейса с объектами, контейнерами, элементами управления, ярлыками, в которых класс имеет в качестве детей только объекты одного и того же типа или подтипы.
Вот мой код. У меня есть верхний уровень, как
public interface ITerm
{
String text { get; }
}
Тогда, как предлагают @Damien_The_Unbeliever
public interface ITerm<T> : ITerm where T : ITerm
{
List<T> Children { get; }
}
public interface ITermControl : ITerm<ITermControl> { ... }
public class TermControl : ITermControl { ... }
Я начинаю думать, что это бесполезно, чтобы иметь доступ к List<ITerm> ITerm.Children
, а также List<ITermControl> ITermControl.Children
. Вот что я пытался объяснить.
Благодаря
Имеет ли тип всегда тот же тип, что и сам, как дети? Действительно ли ваша иерархия наследования идет глубже? Думаю, нам понадобится больше контекста. –