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

本文关键字:同类型 方法 存储 子类 两个 | 更新日期: 2023-09-27 17:57:11

我正在使用C#,我正在尝试编写一个包含两个子类的AbstractTriangle层次结构:Triangle和SpecialTriangle。

三角形由

线条组成,但特殊三角形由特殊线组成!

我可以想到多种方法将线条存储在三角形中:

  1. AbstractTriangle 包含 AbstractLine 的列表
  2. AbstractTriangle 包含 ILine 的列表
  3. ITriangle具有ILine,Triangle和SpecialTriangle列表的访问器,负责自己的Line或SpecialLine列表

处理这些层次结构的正确、最优雅的方法是什么?

我是否需要牺牲返回具体类型线的三角形才能使其正常工作?

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

使用泛型而不是继承:

class Triangle<T> where T: ILine
{
    List<T> edges;
    ···
}

然后将其实例化为

Triangle<Line> 

Triangle<SpecialLine>