c# - valid - sandcastle visual studio
¿Hay alguna manera de obtener una instancia System.Configuration.Configuration basada en xml arbitrario? (3)
Creo que lo que estás buscando es ConfigurationManager. OpenMappedExeConfiguration
Le permite abrir un archivo de configuración que especifique con una ruta de archivo (dentro de un ExeConfigurationFileMap )
Si lo que dijo el otro cartel es cierto, y no desea crear un archivo XML completamente nuevo 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 la configuración recién modificada datos.
Estoy intentando probar la unidad ConfigurationSection personalizada que he escrito, y me gustaría cargar algunos XML de configuración arbitraria en System.Configuration.Configuration para cada prueba (en lugar de poner el xml de configuración de prueba en el Test.dll. archivo de configuración. 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 que ConfigurationManager solo le dará Instancias de configuración que están asociadas con un archivo EXE o una configuración de máquina. ¿Hay alguna manera de cargar XML arbitrario en una instancia de Configuración?
De hecho, hay una manera que he descubierto ...
Debe definir una nueva clase heredando de la 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);
}
}
A continuación, 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 :-)
Mirando a los miembros de la clase, diría que la respuesta es probablemente no *. No estoy seguro de por qué querría hacer esto de todos modos, en lugar de crear su propio archivo de configuración XML.
* Eso no, excluyendo hacks de reflexión desordenado