У меня есть пользовательский элемент управления, GridMasterControl , который содержит (помимо прочего) другой элемент управления, называемый Grid .
Теперь мне нужно наследовать от Сетка для создания EditableGrid (чтобы добавить функциональность редактирования в сетку).
Затем мне нужно создать EditableGridMasterControl , который будет идентичен GridMasterControl , за исключением того, что он будет использовать EditableGrid , а не Grid .
У обоих способов реализации этого есть свои проблемы.
1. Я мог бы скопировать и вставить GridMasterControl и просто изменить Сетка на EditableGrid . Плохая идея (дублирование кода не очень хорошо).
2. Я мог бы получить EditableGridMasterControl для наследования от GridMasterControl , затем добавить виртуальную функцию CreateGrid в GridMasterControl . EditableGridMasterControl может реализовать это для создания элемента управления EditableGrid . Это тоже очень плохая идея, так как мне нужно изменить файл конструктора, чтобы создать элемент управления. Мне нужно сохранить файл конструктора в чистоте.
Как лучше всего это реализовать?
EDIT
Просто чтобы прояснить, я думаю, суть проблемы в том, что Visual Studio не позволяет вам изменять файлы конструктора, которые он создает (или, по крайней мере, это очень плохая идея), и я хочу иметь возможность условно создать другой класс в зависимости от ситуации.