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>
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top