我已經大致有以下幾種類型層次,(我知道,在一個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