2008-08-21 13 views
14

Sto provando a testare un'unità ConfigurationSection personalizzata che ho scritto e vorrei caricare alcuni XML di configurazione arbitraria in un System.Configuration.Configuration per ogni test (anziché inserire il test xml di configurazione nel file Tests.dll.config . Cioè, mi piacerebbe fare qualcosa di simile:C'è un modo per ottenere un'istanza System.Configuration.Configuration basata su xml arbitrario?

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

Tuttavia, sembra che ConfigurationManager solo vi darà le istanze di configurazione che sono associati con un file EXE o una configurazione macchina c'è un modo per. caricare XML arbitrario in un'istanza di configurazione?

risposta

15

V'è in realtà un modo ho scoperto ....

è necessario definire una nuova classe che eredita dalla sezione di configurazione originale come segue:

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


È quindi possibile creare un'istanza l'oggetto ConfigurationSection come segue:

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

Speranza che aiuta qualcuno :-)

+0

oggetti di scena per rispondere effettivamente alla sua domanda. –

0

Guardando i membri della classe, direi che probabilmente la risposta è no. * Non sono sicuro del perché per fare questo comunque, piuttosto che creare il proprio file di configurazione XML.

* Questa non è, ad esclusione di riflessione disordinato hack

1

Penso che quello che stai cercando è ConfigurationManager. OpenMappedExeConfiguration

Esso consente di aprire un file di configurazione che si specifica con un percorso di file (avvolto all'interno di un ExeConfigurationFileMap)

Se ciò che l'altro manifesto detto è vero, e non si desidera creare un intero nuovo File XML per il test, quindi ti consigliamo di inserire le modifiche di configurazione nel metodo Test stesso, quindi eseguire i test sui dati di configurazione appena modificati.