Общий шаблон формы Windows - PullRequest
8 голосов
/ 08 января 2012

Я создаю общую форму Windows, которая принимает T и использует отражение с пользовательскими атрибутами для создания меток и элементов управления вводом во время выполнения.

Пример:

class GenericForm<T>: Form where T : ICloneable<T>  
{  
}  

Вот ссылка на предыдущий вопрос для кода формы: SO Вопрос .

Эта форма может принять следующий класс сущности в качестве примера:

class Vehicle: ICloneable<Vehicle>  
{  
    public int Id { get; set; }  
    public int Name { get; set; }  
    public int Description { get; set; }  
}  

Как вы могли догадаться, магия, лежащая в основе формы, использовала бы отражение для определения типов данных, критериев проверки, предпочтительных типов элементов управления и т. Д.

Вместо того, чтобы заново изобретать колесо, я подумал, что стоит спросить у SO, кто-нибудь знает о таких фреймворках. Излишне говорить, что я ищу что-то простое, а не громоздкие рамки.

Ответы [ 2 ]

1 голос
/ 11 января 2012

eXpressApp Framework (XAF) может генерировать пользовательский интерфейс на лету.В простом случае программист будет создавать только бизнес-объекты и вообще не будет заботиться об интерфейсе пользователя.

0 голосов
/ 11 января 2012

Насколько я знаю, нет никаких фреймворков, которые генерируют код пользовательского интерфейса во время выполнения.Есть много инструментов (генераторов кода), которые делают это раньше.Но у вас не было бы преимущества «только» изменения кода - у вас был бы дополнительный шаг, когда вам нужно было бы запустить генератор кода.

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

Еще одна вещь, которую вы могли бы сделать, - это перенести информацию о вашем пользовательском интерфейсе в файл XML и создать для нее генератор.Есть на самом деле фреймворк, который делает это - взгляните на фреймворк re-motion .Я не знаю, свободна ли часть пользовательского интерфейса, но у нее есть некоторые функции (например, миксины), которые могут помочь вам в выполнении вашей задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...