Я примерно следующее Type Hierarchy, (я знаю, что все ребра на NonPolygon не будет дуги.ковариации с функциональными типами возврата
Я пытаюсь сделать EXTRUSIONS на всех PlaneRegions в результате вернулся из массива объектов. Когда я выдавить Polygon Я хочу вернуть многогранник. Когда я вернусь в NonPolygon, я хочу вернуть NonPolyhedron, который также является твердым.
public class PlaneRegion
{
public IEnumerable<IEdge> Edges;
public virtual Solid Extrude()
{
throw new NotImplementedException();
}
}
я продлить выше класс с двумя полученными классы t hat используют разные производные типы IEdge как Edges. И я также хотел бы, чтобы их методы выдавливания возвращали разные значения объектов Solid.
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() вместо производных реализаций классов. Я не могу переопределить метод Extrude в PlaneRegion, потому что у меня есть «разные» типы возврата. Каков подходящий способ возврата производного типа из функции в производном типе? (Если есть способ?)
Опечати прямо на заказ. – jth41