Existe uma maneira de obter uma instância System.Configuration.Configuration baseada em XML arbitrário?

StackOverflow https://stackoverflow.com/questions/20952

Pergunta

Estou tentando testar a unidade de uma ConfigurationSection personalizada que escrevi e gostaria de carregar algum XML de configuração arbitrária em um Sistema.Configuração.Configuração para cada teste (em vez de colocar o xml de configuração do teste no arquivo Tests.dll.config.Ou seja, eu gostaria de fazer algo assim:

Configuration testConfig = new Configuration("<?xml version=\"1.0\"?><configuration>...</configuration>");
MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection");
Assert.That(section != null);

No entanto, parece Gerenciador de configuração fornecerá apenas instâncias de configuração associadas a um arquivo EXE ou a uma configuração de máquina.Existe uma maneira de carregar XML arbitrário em uma instância de configuração?

Foi útil?

Solução

Na verdade, há uma maneira que descobri....

Você precisa definir uma nova classe herdada de sua seção de configuração original da seguinte forma:

public class MyXmlCustomConfigSection : MyCustomConfigSection
{
    public MyXmlCustomConfigSection (string configXml)
    {
        XmlTextReader reader = new XmlTextReader(new StringReader(configXml));
        DeserializeSection(reader);
    }
}


Você pode então instanciar seu objeto ConfigurationSection da seguinte maneira:

string configXml = "<?xml version=\"1.0\"?><configuration>...</configuration>";
MyCustomConfigSection config = new MyXmlCustomConfigSection(configXml);

Espero que ajude alguém :-)

Outras dicas

Acho que o que você está procurando é o ConfigurationManager.Configuração OpenMappedExe

Ele permite que você abra um arquivo de configuração especificado com um caminho de arquivo (envolvido dentro de um ExeConfigurationFileMap)

Se o que o outro autor da postagem disse for verdade e você não deseja criar um arquivo XML totalmente novo para teste, recomendo que você coloque suas edições de configuração no próprio método de teste e execute seus testes na configuração recém-alterada dados.

Olhando para os membros da turma, eu diria que a resposta provavelmente é não*.Não sei por que você deseja fazer isso, em vez de criar seu próprio arquivo de configuração XML.

*Isso não, excluindo hacks de reflexão confusos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top