Помогите с использованием ConfigurationSection для правильного чтения из файла конфигурации - PullRequest
4 голосов
/ 01 ноября 2008

Я пытаюсь создать классы для чтения из моего файла конфигурации, используя 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 ]

5 голосов
/ 01 ноября 2008

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

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

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

И вы бы создали SubPaymentMethod и унаследовали бы его от элемента конфигурации.

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

3 голосов
/ 01 ноября 2008

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

...