在两个子类中存储不同类型的正确方法
本文关键字:同类型 方法 存储 子类 两个 | 更新日期: 2023-09-27 17:57:11
我正在使用C#,我正在尝试编写一个包含两个子类的AbstractTriangle层次结构: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>