2016-01-27 88 views
1

我有一个接口如下:C#接口约束

public interface IOutlinesComputable 
{ 
    Tuple<Point,Point> getBoundingBox(); 
} 

此外我有一个抽象类形状实现此接口和形状的两个子类:SimpleShapeGroupShapes - 后者一个包含形状的列表 s。

我的客户端代码获得一个列表IOutlinesComputable s。如果边界框重叠,我想通过此列表并检查每对IOutlinesComputable s。如果是这样,我想合并这些:在形状的情况下,通过创建GroupShapes的新实例并向其添加重叠形状 s。

我可以在A类实现IOutlinesComputable接口国家必须有一个子类它引用的一个个列表,这样我就可以做这个过程中的所有对象进行结构类似于形状SimpleShape and GroupShapes

我只是意识到,我要照顾的是,在IOutlinesComputable列表中的所有对象都是同一类型(所以它是越来越少不错),但无论如何,我想知道如果事情像这样是可能的,或者如何设计这个最好的方法。

+0

重新考虑你的关系。 “GroupShapes”实际上是一个'List ' – user700390

+0

您可以将任何Shape视为具有重叠形状的列表。它只是发生了一些形状,其中有一个空列表,我们说他们是*简单*。编辑:我在想你的形状是不可改变的。编辑2:如果你有一个'List '的自定义类(如下面的注释中所述),你的形状类可以有一个属性,而所谓的*简单*形状可能有它的空。 – Theraot

+0

> user700390是的,但我有其他方法与'List '(我在这里省略)有关,我认为这是一个好的地方。 – nistel

回答

2

我可以在A类实现IOutlinesComputable必须有一个子类B的引用作为一个列表,以便为所有对象被结构状,SimpleShape和GroupShapes我可以做这个过程中,接口状态呢?

不,没有办法在语言中表达这样的约束。