Динамическое наследование с использованием фабрики - PullRequest
1 голос
/ 12 октября 2010

Я думаю, что знаю ответ на этот вопрос, но я надеюсь, что у кого-то есть изящное решение. В настоящее время мы используем два вида раскрывающихся элементов управления (Telerik и .Net). Я надеюсь объединить их в один элемент управления, но борюсь с удобным дизайном.

В идеале элемент управления должен быть создан в файле проекта со свойством bool, скажем, «SimpleBox», чтобы определить, какой тип элемента управления наследуется. Затем экземпляр будет сгенерирован в файле проекта с выделенным кодом, а конструктор будет динамически загружать базу (что невозможно). Простым решением для меня было бы создать интерфейс IDropDown, а затем заставить фабрику создать правильный. Единственная реальная проблема в этом заключается в том, что создание экземпляров должно каждый раз записываться вручную, что создает трудности и совсем не ускоряет наш процесс.

Хотя это не представляется возможным напрямую, я ищу решение по аналогии с фабрикой, которая запускается внутри конструктора объекта для установки базы на основе свойства bool.

Приветствия

1 Ответ

4 голосов
/ 12 октября 2010

Возможно, вы захотите посмотреть на состав / делегирование, а не на наследование.

По сути, вместо того, чтобы расширять любой класс напрямую, создайте класс-оболочку, который расширяет Control (или что-то аналогично низкоуровневое) и реализует IDropDown, добавьте поле IDropDown для базовой реализации элемента управления, которую вы хотите использовать и перенаправлять каждый интересующий метод вызов выбранной реализации. Это быстро становится утомительным, если есть много методов.

...