我已经大致有以下几种类型层次,(我知道,在一个NonPolygon所有边缘不会弧线。协方差与函数返回类型
我试图做导致所有PlaneRegions型材返回固体对象。当我挤出多边形欲返回一个多面体。当我返回一个NonPolygon,我想返回一个NonPolyhedron,这也是一个固体。
public class PlaneRegion
{
public IEnumerable<IEdge> Edges;
public virtual Solid Extrude()
{
throw new NotImplementedException();
}
}
I与两种衍生延伸上面的类类t帽子使用IEdge的不同派生类型作为边缘。我想也有他们的挤压方法返回固体对象的不同派生。
public class Polygon: PlaneRegion
{
public Polygon(List<LineSegment> passedSegments)
{
this.Edges = passedSegment;
}
public new Polyhedron Extrude()
{
List<LineSegment> segments = Edges as List<LineSegment>;
foreach (var segment in segments)
{
//do stuff
}
return new Polyhedron(new List<Polygon>(){ this});
}
}
public class NonPolygon: PlaneRegion
{
public NonPolygon(List<Arc> passedArcs)
{
this.Edges = passedArcs;
}
public new NonPolyhedron Extrude()
{
foreach (var arc in Edges as List<Arc>)
{
//do stuff
}
return new NonPolyhedron(new List<NonPolygon>(){this});
}
}
当我尝试下面的代码时,我调用PlaneRegion Extrude()而不是派生类实现的实现。我无法重写PlaneRegion中的Extrude方法,因为我有“不同的”返回类型。从派生类型的函数返回派生类型的适当方式是什么? (如果有方法?)
哎呀,你错了。 – jth41 2014-10-20 17:45:10