Список, содержащий отдельные записи из разных классов

#c# #list #class #subclass

Вопрос:

Я работал над программой типа «краска» и хочу заставить ластик стереть весь элемент, если он попадет. Я использовал интерфейс и подклассы, подобные этому:

 public interface IPaint {  // some different methods }  public abstract class StartAndEndTool : IPaint {  public Listlt;IPaintgt; shapes = new Listlt;IPaintgt;();   // the methods again, this time abstract/virtual }  public class RectangleTool : StartAndEndTool {  // overriding some of the methods  // in one of the methods we edit the list, like follows:   public override void Complete( ... )  {  // some mumbo-jumbo, and:   shapes.Add(new RectangleTool());  } }  public class EllipseTool : StartAndEndTool {  // overriding some of the methods  // in one of the methods we edit the list, like follows:   public override void Complete( ... )  {  // some mumbo-jumbo, and:   shapes.Add(new EllipseTool());  } }  public class EraserTool: StartAndEndTool {  // overriding some of the methods  // in one of the methods we USE the list }  

Теперь, когда я использую shapes список в EraserTool методе, он говорит, что список пуст. Я провел некоторое исследование, но, похоже, методы создают своего рода «отдельные списки». Например, когда я рисую прямоугольник, затем эллипс, затем снова прямоугольник, в нем будет разное количество записей в зависимости от того, в каком классе он используется. Итак, в этом примере: shapes.Count будет равно 2, если написано в RectangleTool классе, и будет равно 1, если написано в EllipseTool классе. Я пробовал использовать ICollections, но он делает то же самое. Как мне это исправить?

Комментарии:

1. Формы теперь являются свойством инструмента, поэтому они доступны только внутри инструмента, и у каждого инструмента есть свой собственный список.

2. Или, ну, доступны из любого места, поскольку они общедоступны, но все равно формы должны быть определены где-то там, где вы определяете свои инструменты, а не как часть инструмента.