Создание динамически сгенерированного пользовательского интерфейса конфигурации с использованием отражения на типах данных .NET Config - PullRequest
4 голосов
/ 21 июля 2011

Кто-нибудь имел опыт работы с / пытался это сделать?

У нас есть довольно сложная конфигурация XML для нашего приложения .NET, и мы подумали, что было бы неплохо, если бы мы могли использовать нашу иерархию объектов конфигурации для динамическогосоздайте пользовательский интерфейс, используя отражения и атрибуты / метаданные из свойств этих объектов, чтобы предоставить пользователю параметры для создания конфигурации.

Было бы неплохо сделать это достаточно общим, чтобы мы могли предоставить еголюбой объект конфигурации .NET XML (в пределах разумного), и он будет отражать его и позволять заполнять его.

1 Ответ

1 голос
/ 09 ноября 2011

Вам нужно подумать, для чего именно нужны файлы конфигурации в .NET. Это место для определения различий между развертываниями вашего приложения. Поэтому, когда вы говорите о динамическом изменении конфигурации, основанной на кодированной логике, я думаю, что вы могли бы ошибиться. Это ваш код, который должен принимать направление от настроек, введенных через конфигурацию.

Кажется, вы ищете какой-нибудь редактор настроек? Зачем это делать, когда в Visual Studio есть два встроенных? Окно редактирования и различные редакторы конфигурации, редактор конфигурации ASP.NET, редактор конфигурации службы Microsoft и т. Д.

По моему опыту, различия между web или app.config в среде Dev по сравнению с тестовой средой по сравнению с производственной средой обычно отличаются лишь несколькими параметрами, такими как строки подключения, AppSettings, адреса очереди сообщений, конечные точки службы, Настройки Log4Net и т. Д.

Хорошо, довольно много настроек, но в каждом блоке конфигурации обычно есть только один или два атрибута, которые отличаются от среды к среде. Исключением является конфигурация IOC, например Spring.NET, CastleWinsor или Unity. Но даже тогда они часто совершенно одинаковы в разных средах.

Я бы посоветовал вам уйти и немного подумать об этом. Подумайте о реальной проблеме, которую вы пытаетесь решить. Возможно, вам нужен какой-то рабочий процесс, управляемый базой данных? Я не знаю.

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

Сказав это, есть такие инструменты, как ConfigGen , что позволяет с легкостью генерировать конфигурацию для конкретной среды. Проверьте это, когда это действительно то, что вам нужно.

...