Сведения о вопросе

Drake

22:35, 7th August, 2020

Теги

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

Просмотров: 426   Ответов: 3

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

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

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



  Сведения об ответе

crush

01:29, 26th August, 2020

На самом деле есть способ, который я открыл....

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

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);

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


  Сведения об ответе

appple

08:37, 4th August, 2020

Я думаю, что то, что вы ищете-это ConfigurationManager. OpenMappedExeConfiguration

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

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


  Сведения об ответе

baggs

20:20, 21st August, 2020

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

*That's нет, исключая грязные хаки отражения


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться