¿Hay alguna manera de obtener una instancia System.Configuration.Configuration basada en xml arbitrario?

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

Pregunta

Estoy intentando realizar una prueba unitaria de una sección de configuración personalizada que he escrito y me gustaría cargar algún XML de configuración arbitrario en un Configuración.del.sistema.Configuración para cada prueba (en lugar de colocar el xml de configuración de la prueba en el archivo Tests.dll.config).Es decir, me gustaría hacer algo como esto:

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

Sin embargo, parece Administrador de configuración solo le proporcionará instancias de configuración asociadas con un archivo EXE o una configuración de máquina.¿Existe alguna forma de cargar XML arbitrario en una instancia de configuración?

¿Fue útil?

Solución

De hecho, he descubierto una manera...

Debe definir una nueva clase que herede de su sección de configuración original de la siguiente manera:

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


Luego puede crear una instancia de su objeto ConfigurationSection de la siguiente manera:

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

Espero que ayude a alguien :-)

Otros consejos

Creo que lo que estás buscando es ConfigurationManager.Configuración OpenMappedExe

Le permite abrir un archivo de configuración que usted especifica con una ruta de archivo (envuelta dentro de un ExeConfigurationFileMap)

Si lo que dijo el otro cartel es cierto y no desea crear un archivo XML completamente nuevo para realizar pruebas, le recomiendo que coloque las ediciones de configuración en el método de prueba y luego ejecute las pruebas con la configuración recién modificada. datos.

Mirando a los miembros de la clase, diría que la respuesta probablemente sea no*.No estoy seguro de por qué querrías hacer esto de todos modos, en lugar de crear tu propio archivo de configuración XML.

*Eso es no, excluyendo los trucos de reflejos desordenados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top