Is there a way to get a System.Configuration.Configuration instance based on arbitrary xml?

前端 未结 3 1831
清酒与你
清酒与你 2020-12-06 05:42

I\'m trying to unit test a custom ConfigurationSection I\'ve written, and I\'d like to load some arbitrary configuration XML into a System.Configuration.Configuration for ea

相关标签:
3条回答
  • 2020-12-06 05:59

    There is actually a way I've discovered....

    You need to define a new class inheriting from your original configuration section as follows:

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


    You can then instantiate your ConfigurationSection object as follows:

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

    Hope it helps someone :-)

    0 讨论(0)
  • 2020-12-06 06:01

    I think what you're looking for is ConfigurationManager.OpenMappedExeConfiguration

    It allows you to open a configuration file that you specify with a file path (wrapped inside a ExeConfigurationFileMap)

    If what the other poster said is true, and you don't wish to create a whole new XML file for testing, then I'd recommend you put your Configuration edits in the Test method itself, then run your tests against the freshly changed configuration data.

    0 讨论(0)
  • 2020-12-06 06:16

    Looking at the members of the class, I'd say the answer is probably no*. I'm not sure why you'd want to do this anyway, rather than create your own XML configuration file.

    *That's no, excluding messy reflection hacks

    0 讨论(0)
提交回复
热议问题