Guida all'uso di ConfigurationSection per leggere correttamente da un file di configurazione
-
05-07-2019 - |
Domanda
Sto provando a creare classi da leggere dal mio file di configurazione usando ConfigurationSection e ConfigurationElementCollection ma sto facendo fatica.
Come esempio della configurazione:
<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>
Soluzione
La magia qui è usare le classi ConfigurationSection.
Queste classi devono contenere solo proprietà che corrispondono a 1: 1 con lo schema di configurazione. Usa gli attributi per far sapere a .NET quali proprietà corrispondono a quali elementi.
Quindi, è possibile creare PaymentMethod e farlo ereditare da ConfigurationSection
E dovresti creare SubPaymentMethod e farlo ereditare da ConfigurationElement.
PaymentMethod avrebbe un ConfigurationElementCollection di SubPaymentMethods come proprietà, ovvero come collegare insieme i tipi complessi.
Non è necessario scrivere il proprio codice di analisi XML.
public class PaymentSection : ConfigurationSection
{
// Simple One
[ConfigurationProperty("name")]]
public String name
{
get { return this["name"]; }
set { this["name"] = value; }
}
}
ecc ...
Vedi qui per come creare ConfigurationElementCollections in modo da poter avere tipi nidificati:
http://blogs.neudesic.com /blogs/jason_jung/archive/2006/08/08/208.aspx
Altri suggerimenti
Questo dovrebbe aiutarti a capire come creare sezioni di configurazione correttamente, quindi leggi da loro.