Elementos de configuração de nidificação em web.config
Pergunta
Estou aprendendo a usar o System.Configuration no .NET e gostaria de saber se existe uma maneira de definir infinitamente as configurações de configuração no meu arquivo web.config.
Digamos que eu tenha dois tipos de objetos - uma página e um grupo de página. Uma página representa uma página real no meu site e um grupo de páginas representa uma coleção de páginas e (possivelmente) outros grupos de página.
Meu arquivo web.config pode conter algo como:
<pagegroup name="outer_group"> <page name="page1" url="page1.htm" /> <page name="page2" url="page2.htm" /> <pagegroup name="middle_group"> <page name="page3" url="page3.htm" /> <pagegroup name="inner_group"> ...and so on... </pagegroup> </pagegroup> </pagegroup>
Meu entendimento limitado das classes de configuração me leva a acreditar que não é para isso que foram projetadas - mas espero que esteja errado.
É possível usar o ConfigurationElementCollections and ConfigurationElements (ou qualquer outro ConfigurationClasses aplicáveis) dessa maneira?
Solução
Você basicamente tem dois tipos diferentes de itens para lidar:
uma
ConfigurationSectionGroup
é um contêiner para outros elementos, principalmente seções de configuração (ou outros grupos de seção de configuração). O próprio grupo da seção não possui propriedades ou atributos de configuração - é apenas um contêiner para seções de configuraçãoa
ConfigurationSection
é o item que pode conter atributos, elementos, coleções etc. com as configurações reais que você deseja armazenar
Até onde eu sei, você pode aninhar os grupos da seção de configuração o mais profundo possível, mas não pode aninhar nada dentro de uma seção de configuração.
Para uma ótima introdução e muitas informações em segundo plano, consulte a série de três partes de Jon Rista na configuração .NET 2.0 no CodeProject.
- Desvendando os mistérios da configuração .NET 2.0
- Decodificar os mistérios da configuração .NET 2.0
- Rachando os mistérios da configuração .NET 2.0
Altamente recomendado, bem escrito e extremamente útil!