C# 在两个子类中存储不同类型的正确方法

C# 在两个子类中存储不同类型的正确方法,c#,inheritance,interface,composition,C#,Inheritance,Interface,Composition,我在C语言中工作,我正试图编写一个抽象的三角形层次结构,它包含两个子类:Triangle和SpecialTriangle 三角形是由直线组成的,而特殊三角形是由特殊直线组成的 我可以想出许多方法将线存储在三角形中: AbstractTriangle包含一个AbstractLine列表 AbstractTriangle包含一个ILine列表 ITriangle有一个ILine列表的访问器,Triangle和SpecialTriangle负责自己的Line或SpecialLine列表 处理这些层次结

我在C语言中工作,我正试图编写一个抽象的三角形层次结构,它包含两个子类:Triangle和SpecialTriangle

三角形是由直线组成的,而特殊三角形是由特殊直线组成的

我可以想出许多方法将线存储在三角形中:

AbstractTriangle包含一个AbstractLine列表 AbstractTriangle包含一个ILine列表 ITriangle有一个ILine列表的访问器,Triangle和SpecialTriangle负责自己的Line或SpecialLine列表 处理这些层次结构的正确、最优雅的方式是什么


我需要牺牲返回具体类型行的三角形才能正常工作吗?

使用泛型而不是继承:

class Triangle<T> where T: ILine
{
    List<T> edges;
    ···
}
然后将其实例化为

Triangle<Line> 

Triangle<SpecialLine>