我有一个如下界面:
public interface IOutlinesComputable
{
Tuple<Point,Point> getBoundingBox();
}
此外,我有一个实现此接口的抽象类 Shape 和 Shape 的两个子类: SimpleShape 和 GroupShapes - 后者包含 Shape 的列表。
我的客户端代码获取 IOutlinesComputable 的列表。我想通过这个列表并检查每对 IOutlinesComputable s,如果它们的边界框重叠。如果是这样,我想合并这些:在形状的情况下,通过创建 GroupShapes 的新实例并向其添加重叠的 Shape 。
我可以在界面中说明实现 IOutlinesComputable 的A类必须有一个子类 B 引用 A 的列表,这样我就可以为所有构造的对象执行此过程,如 Shape , SimpleShape 和 GroupShapes ?
我只是意识到我必须注意 IOutlinesComputable 列表中的所有对象都是相同的类型 A (所以它变得不那么好了),但无论如何我想知道这样的事情是否可能或如何设计这个最佳方式。
答案 0 :(得分:2)
我可以在接口中声明实现IOutlinesComputable的类A必须有一个引用As列表的子类B,以便我可以对所有像Shape,SimpleShape和GroupShapes这样的结构对象执行此过程吗?
不,没有办法在语言中表达这样的约束。