Помогите с использованием ConfigurationSection для правильного чтения из файла конфигурации

Я пытаюсь создать классы для чтения из моего конфигурационного файла, используя ConfigurationSection и ConfigurationElementCollection, но мне трудно.

В качестве примера конфигурации:


<PaymentMethodSettings>
  <PaymentMethods>
    <PaymentMethod name="blah blah" code="1"/>
    <PaymentMethod name="blah blah" code="42"/>
    <PaymentMethod name="blah blah" code="43"/>
    <Paymentmethod name="Base blah">
      <SubPaymentMethod name="blah blah" code="18"/>
      <SubPaymentMethod name="blah blah" code="28"/>
      <SubPaymentMethod name="blah blah" code="38"/>
    </Paymentmethod>
  </PaymentMethods>
</PaymentMethodSettings>

2 ответа

Решение

Волшебство здесь заключается в использовании классов ConfigurationSection.

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

Таким образом, вы можете создать PaymentMethod и сделать его наследником ConfigurationSection.

И вы бы создали SubPaymentMethod и унаследовали бы его от ConfigurationElement.

PaymentMethod будет иметь ConfigurationElementCollection SubPaymentMethods в качестве свойства, то есть, как вы соединяете сложные типы вместе.

Вам не нужно писать собственный код для разбора XML.

public class PaymentSection : ConfigurationSection
{
   // Simple One
   [ConfigurationProperty("name")]]
   public String name
   {
      get { return this["name"]; }
      set { this["name"] = value; }
   }

}

так далее...

Смотрите здесь, как создать ConfigurationElementCollections, чтобы вы могли иметь вложенные типы:

http://blogs.neudesic.com/blogs/jason_jung/archive/2006/08/08/208.aspx

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

Другие вопросы по тегам