Есть ли способ получить экземпляр System.Configuration.Configuration на основе произвольного XML?

StackOverflow https://stackoverflow.com/questions/20952

Вопрос

Я пытаюсь выполнить модульное тестирование написанного мной пользовательского раздела ConfigurationSection и хотел бы загрузить произвольный XML-файл конфигурации в Система.Конфигурация.Конфигурация для каждого теста (вместо помещения XML-конфигурации теста в файл Tests.dll.config.То есть я хотел бы сделать что-то вроде этого:

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

Однако это похоже на Диспетчер конфигурации предоставит вам только экземпляры конфигурации, связанные с EXE-файлом или конфигурацией компьютера.Есть ли способ загрузить произвольный XML в экземпляр конфигурации?

Это было полезно?

Решение

На самом деле я нашел способ....

Вам необходимо определить новый класс, унаследованный от исходного раздела конфигурации, следующим образом:

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


Затем вы можете создать экземпляр объекта ConfigurationSection следующим образом:

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

Надеюсь, кому-то поможет :-)

Другие советы

Я думаю, что вы ищете ConfigurationManager.Опенмаппедексеконфигуратион

Он позволяет вам открыть файл конфигурации, указанный вами с указанием пути к файлу (завернутого в ExeConfigurationFileMap)

Если то, что сказал другой автор, верно, и вы не хотите создавать совершенно новый XML-файл для тестирования, я бы рекомендовал вам внести изменения в конфигурацию в сам метод Test, а затем запустить тесты для недавно измененной конфигурации. данные.

Глядя на членов класса, я бы сказал, что ответ, вероятно, отрицательный*.Я не уверен, почему вы вообще хотите это сделать, а не создавать свой собственный файл конфигурации XML.

*Нет, за исключением грязных хаков с отражениями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top