Ajuda com o uso de ConfigurationSection para ler corretamente a partir de um arquivo de configuração
-
05-07-2019 - |
Pergunta
Eu estou tentando criar classes para ler do meu arquivo de configuração usando ConfigurationSection e ConfigurationElementCollection, mas estou tendo um momento difícil.
Como um exemplo da configuração:
<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>
Solução
A magia aqui é usar as classes ConfigurationSection.
Essas classes só precisa conter propriedades que correspondem a 1: 1 com o seu esquema de configuração. Você pode usar atributos para deixar .NET saber quais propriedades corresponder quais elementos.
Assim, você pode criar PAYMENTMETHOD e tê-lo herdar de ConfigurationSection
E você criaria SubPaymentMethod e tê-lo herdar de ConfigurationElement.
PAYMENTMETHOD teria um ConfigurationElementCollection de SubPaymentMethods nele como uma propriedade, é assim que você conectar-se os tipos complexos juntos.
Você não precisa escrever o seu próprio código de análise XML.
public class PaymentSection : ConfigurationSection
{
// Simple One
[ConfigurationProperty("name")]]
public String name
{
get { return this["name"]; }
set { this["name"] = value; }
}
}
etc ...
Veja aqui como criar os ConfigurationElementCollections assim você pode ter tipos aninhados:
http://blogs.neudesic.com /blogs/jason_jung/archive/2006/08/08/208.aspx
Outras dicas
Este deve ajudá-lo a descobrir como criar seções de configuração corretamente, e, em seguida, lê-los.