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

StackOverflow https://stackoverflow.com/questions/254976

Вопрос

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

Решение

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

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

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

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

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

Вам не нужно писать свой собственный код синтаксического анализа 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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top