Existe-t-il un moyen d’obtenir une instance System.Configuration.Configuration basée sur xml arbitraire?

J’essaie de tester une configurationSection personnalisée que j’ai écrite et j’aimerais charger un XML de configuration arbitraire dans une System.Configuration.Configuration pour chaque test (plutôt que de placer le code XML de configuration de test dans Tests.dll. C’est-à-dire que j’aimerais faire quelque chose comme ceci:

Configuration testConfig = new Configuration("..."); MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection"); Assert.That(section != null); 

Cependant, il semble que ConfigurationManager ne vous fournisse que les instances de configuration associées à un fichier EXE ou à une configuration d’ordinateur. Est-il possible de charger du XML arbitraire dans une instance de configuration?

Il y a en fait un moyen que j’ai découvert …

Vous devez définir une nouvelle classe héritant de votre section de configuration d’origine comme suit:

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

Vous pouvez ensuite instancier votre object ConfigurationSection comme suit:

 ssortingng configXml = "..."; MyCustomConfigSection config = new MyXmlCustomConfigSection(configXml); 

J’espère que ça aide quelqu’un 🙂

Je pense que ce que vous recherchez, c’est ConfigurationManager. OpenMappedExeConfiguration

Il vous permet d’ouvrir un fichier de configuration que vous spécifiez avec un chemin de fichier ( entouré d’ un fichier ExeConfigurationFileMap ).

Si ce que dit l’autre affiche est vrai et que vous ne souhaitez pas créer un nouveau fichier XML à des fins de test, nous vous recommandons alors de placer vos modifications de configuration dans la méthode de test elle-même, puis d’exécuter vos tests avec la configuration récemment modifiée. Les données.

En regardant les membres de la classe, je dirais que la réponse est probablement non *. Je ne sais pas pourquoi vous voudriez quand même faire cela, plutôt que de créer votre propre fichier de configuration XML.

* C’est non, à l’exclusion des hacks de reflection en désordre