представьте себе этот макет классов, которые я использую для построения древовидной структуры:
class Treenodebase
{
Treenodebase Parent{get;set;}
IEnumerable<Treenodebase> Children {get;set;}
}
class Specialtreenode : Treenodebase
{
string SpecialProperty{get;set;}
public string ParentsSpecialProperty()
{
return Parent.SpecialProperty; //here I'd need casting?!
}
}
class Othertreenode : Treenodebase
{
string OtherProperty {get;set;}
}
Я использую подклассы для построения отдельных деревьев по всей моей программе. это означает, что у каждого Specialtreenode всегда есть только родитель типа Specialtreenode, а также потомки типа Specialtreenode.
Снято очень просто. Базовый класс имеет гораздо больше свойств (например, IsSelected и IsExpanded) и методов (например, «Предки» или «Братья и сестры» и т. П.), А также подклассы.
Могу ли я как-то использовать параметры типа здесь, чтобы избежать приведения в каждом из подклассов? Или это всегда подразумевает, что мои подклассы не наследуются от базового класса?