Понимание схемы файла конфигурации .NET - PullRequest
0 голосов
/ 03 августа 2011

У меня есть некоторые трудности с файлами конфигурации в .Net: я полностью понимаю его суть и для чего они хороши, но мне не хватает одной части: файл конфигурации представляет собой файл XML, который во время выполнения десериализуется в управляемый объект (или ОБЪЕКТЫ? ??) на управляемой куче. Но кто эти объекты?

Чтобы уточнить мой вопрос, я приведу один конкретный пример: Если я пишу службу WCF, я могу настроить свою службу, используя элемент System.serviceModel .

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <!-- and this is wherer the service configuration goes... -->
  </system.serviceModel>
</configuration>

Теперь, как я могу получить доступ к этому объекту, используя код? какое имя и тип объекта? Я думал о ConfigurationManager - но его там нет.

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

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Корневой элемент соответствует классу Configuration и десериализуется в него.

Он содержит множество других возможных элементов и некоторые настраиваемые разделы, обычно с ConfigurationSection класс, из которого можно создать подкласс и использовать.

Раздел system.serviceModel является лишь одним из таких разделов - вы можете найти больше информации о самом элементе здесь и об объектеон десериализуется в - ServiceModelConfigurationGroup.

ConfigurationManager - это статический класс, который обеспечивает доступ к десериализованной конфигурации (например, вы можете получить конфигурациюраздел с использованием метода GetSection).

1 голос
/ 03 августа 2011

Все разделы конфигурации обрабатываются "обработчиками разделов конфигурации". Все они должны быть указаны в элементе <configSections> http://msdn.microsoft.com/en-us/library/ms228256.aspx файла конфигурации. Если они там не определены, они уже определены в machine.config или глобальном файле web.config.

Вы можете найти System.Configuration.ConfigurationManager как класс в DLL System.Configuration, которая является частью .NET Framework (это немного сбивает с толку, потому что часть пространства имен System.Configuration уже объявлена ​​в System DLL , но чтобы получить System.Configuration.ConfigurationManager, вам нужно сослаться на System.Configuration.dll.

...