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

Я пытаюсь выполнить модульное тестирование пользовательского ConfigurationSection, который я написал, и я хотел бы загрузить какой-нибудь произвольный XML-файл конфигурации в System.Configuration.Configuration для каждого теста (вместо того, чтобы поместить XML-файл конфигурации теста в Tests.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);

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

16
1.04.2009 09:47:59
реквизит для того, чтобы фактически ответить на его вопрос.
Jonathan C Dickinson 1.04.2009 10:59:50

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

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

0
21.08.2008 20:02:26

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

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

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

1
24.08.2008 09:02:25