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