C#接口约束

C#接口约束,c#,interface,C#,Interface,我有一个界面如下: public interface IOutlinesComputable { Tuple<Point,Point> getBoundingBox(); } 公共接口ioutlines可计算 { 元组getBoundingBox(); } 此外,我还有一个实现这个接口的抽象类Shape和两个子类Shape:SimpleShape和GroupShapes——后者包含一个形状列表 我的客户端代码获取IOutlines可计算文件列表。我想浏览一下这个列表,检查

我有一个界面如下:

public interface IOutlinesComputable
{
    Tuple<Point,Point> getBoundingBox();
}
公共接口ioutlines可计算
{
元组getBoundingBox();
}
此外,我还有一个实现这个接口的抽象类Shape和两个子类Shape:SimpleShape和GroupShapes——后者包含一个形状列表

我的客户端代码获取IOutlines可计算文件列表。我想浏览一下这个列表,检查每一对IOOutlinesComputable的边界框是否重叠。如果是这样的话,我希望通过创建GroupShapes的新实例并向其中添加重叠的形状来合并这些形状

我是否可以在接口中声明,实现IOutlinesComputable的类A必须有一个子类B,该子类B引用As列表,以便我可以对所有结构为Shape、SimpleShape和GroupShapes的对象执行此过程

我刚刚意识到,我必须注意IOutlinesComputable列表中的所有对象都是同一类型的A(因此它变得不那么好),但无论如何,我想知道这样的事情是否可行,或者如何以最佳方式设计它

我是否可以在接口中声明,实现IOutlinesComputable的类A必须有一个子类B,该子类B引用As列表,以便我可以对所有结构为Shape、SimpleShape和GroupShapes的对象执行此过程


不,没有办法用语言表达这样的限制。

重新思考你的关系。“GroupShapes”实际上是一个
列表
您可能会认为任何形状都有一个重叠形状的列表。碰巧有些形状的列表是空的,我们说它们很简单。编辑:我认为你的形状是不变的。编辑2:如果您有一个用于
List
的自定义类(如下面的注释所述),那么您的shape类可以具有该属性,并且所谓的简单shape可能会将其设置为null。>user700390是,但我有与
List
相关的其他方法(我在这里省略了该方法)我认为类是一个很好的地方。将
IEnumerable ChildsAppes()
添加到接口是一种非常常见的表达方式(大多数返回
Enumerable.Empty()