Помогите с использованием ConfigurationSection для правильного чтения из конфигурационного файла
-
05-07-2019 - |
Вопрос
Я пытаюсь создать классы для чтения из моего конфигурационного файла, используя 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
Другие советы
Это должно помочь вам понять, как создавать разделы конфигурации правильно, а затем читать из них.