2008-08-21 9 views
14

Estoy intentando probar unified ConfigurationSection personalizado que he escrito, y me gustaría cargar un XML de configuración arbitrario en un System.Configuration.Configuration para cada prueba (en lugar de poner el xml de configuración de prueba en el archivo Tests.dll.config . es decir, me gustaría hacer algo como esto:¿Hay alguna manera de obtener una instancia de System.Configuration.Configuration basada en xml arbitrario?

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

Sin embargo, parece que ConfigurationManager sólo le dará ejemplos de configuración que están asociados con un archivo EXE o una máquina de config ¿hay una manera de. cargar XML arbitrario en una instancia de Configuración?

Respuesta

15

En realidad, hay una manera que he descubierto ....

es necesario definir una nueva clase que hereda 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); 
    } 
} 


entonces usted puede crear una instancia 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 :-)

+0

accesorios para responder su pregunta. –

0

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

* Eso no es, excluyendo la reflexión desordenado hackea

1

creo que lo que estás buscando es ConfigurationManager. OpenMappedExeConfiguration

Se le permite abrir un archivo de configuración que especifique con una ruta de archivo (envuelto dentro de una ExeConfigurationFileMap)

Si lo que dijo el otro cartel es cierto, y que no desean crear una nueva Archivo XML para probar, entonces le recomendaría que ponga sus ediciones de Configuración en el método de Prueba en sí, luego ejecute sus pruebas contra los datos de configuración recién modificados.

Cuestiones relacionadas