2008-08-21 24 views
14

J'essaie de tester une configuration personnalisée que j'ai écrite, et je voudrais charger un code de configuration arbitraire dans un System.Configuration.Configuration pour chaque test (plutôt que de placer la configuration de test xml dans le fichier Tests.dll.config . C'est, je voudrais faire quelque chose comme ceci:Existe-t-il un moyen d'obtenir une instance System.Configuration.Configuration basée sur un fichier XML arbitraire?

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

Cependant, il semble que ConfigurationManager ne vous donner des exemples de configuration qui sont associés à un fichier EXE ou une configuration de la machine est-il un moyen de. charger du code XML arbitraire dans une instance de configuration?

Répondre

15

Il est en fait une manière que je l'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 (string configXml) 
    { 
     XmlTextReader reader = new XmlTextReader(new StringReader(configXml)); 
     DeserializeSection(reader); 
    } 
} 


Vous pouvez instancier votre objet ConfigurationSection comme suit:

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

aide quelqu'un espère que cela :-)

+0

les accessoires pour réellement répondre à sa question. –

0

En regardant les membres de la classe, je dirais que la réponse est probablement non. * Je ne suis pas sûr de savoir pourquoi vous Pour ce faire, il est préférable de ne pas créer votre propre fichier de configuration XML.

* Ce n'est pas, à l'exclusion de réflexion désordonnée hacks

1

Je pense que ce que vous cherchez est ConfigurationManager. OpenMappedExeConfiguration

Il vous permet d'ouvrir un fichier de configuration que vous spécifiez un chemin de fichier (enveloppé dans un ExeConfigurationFileMap)

Si ce que l'autre affiche a dit est vrai, et vous ne voulez pas créer un tout nouveau Fichier XML à tester, alors je vous recommande de mettre vos modifications de configuration dans la méthode de test elle-même, puis exécutez vos tests sur les données de configuration fraîchement modifiées.