Есть ли способ получить систему?Конфигурация.Экземпляр конфигурации на основе произвольного xml?
Я пытаюсь модульно протестировать пользовательский раздел конфигураций, который я написал, и я хотел бы загрузить некоторый произвольный XML-файл конфигурации в Систему .Конфигурация.Конфигурация для каждого теста (вместо того, чтобы помещать xml-файл конфигурации теста В тесты.файл DLL.конфигурационный файл. То есть, я хотел бы сделать что-то вроде этого:
Configuration testConfig = new Configuration("<?xml version="1.0"?><configuration>...</configuration>");
MyCustomConfigSection section = testConfig.GetSection("mycustomconfigsection");
Assert.That(section != null);
Однако, похоже, что ConfigurationManager предоставит вам только экземпляры конфигурации, связанные с EXE-файлом или конфигурацией машины. Является есть способ загрузить произвольный XML в экземпляр конфигурации?
3 ответа:
На самом деле есть способ, который я открыл....
Необходимо определить новый класс, наследующий от исходного раздела конфигурации следующим образом:
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.OpenMappedExeConfiguration
Он позволяет открыть файл конфигурации, который вы указываете с помощью пути к файлу (завернутый в ExeConfigurationFileMap )
Если то, что было сказано на другом плакате, правда, и вы не хотите создавать совершенно новый XML-файл для тестирования, то я бы рекомендовал вам внести изменения в конфигурацию в самом методе тестирования, а затем запустить тесты против недавно измененной конфигурации. данные.