У меня есть несколько классов C#, называемых ShapeA, ShapeB, ShapeC и т. Д. И класс коллекции ShapeCollection. все они наследуются от абстрактного класса под названием «Геометрия». Все эти классы прибывают из сторонней сборки, поэтому я не могу их изменить.Внедрение нового интерфейса без создания производного типа
Я хочу также добавить новый метод ко всем этим классам Shape, назовем его Paint()
и реализовать этот метод по-разному для каждого класса Shape. Класс ShapeCollection просто вызовет этот метод Paint()
для каждого класса формы в коллекции.
Самый простой способ, которым я думал сделать это, - создать новый класс для каждого класса формы, который наследует исходный класс формы, но также будет реализовывать интерфейс, который будет содержать метод Paint()
.
Я действительно стараюсь избегать создания производного типа для каждой из этих фигур, потому что существует много классов формы.
Каков правильный способ сделать это?
Как выглядит ваш ShapeCollection? Полагаю, коллекция - это ваш собственный класс? У вас есть ShapeACollection, ShapeBCollection и т. Д.? Или это всего лишь одна коллекция со всеми формами? – GenericTypeTea
Чтобы уточнить: ShapeCollection является частью третьей стороны. Он содержит коллекцию объектов геометрии. Это означает, что он может содержать экземпляры разных классов формы. Причина, по которой я упоминал о существовании ShapeCollection, заключается в том, что я думал об использовании методов расширения, но затем в методе Paint() ShapeCollection у меня не было бы обычного способа вызвать метод Paint() для разных Экземпляры формы. –