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

Это означает, что вы пытаетесь получить доступ к индексу массива, который недопустим, поскольку он не находится между границами.

Например, это инициализировало бы примитивный целочисленный массив с верхней границей 4 .

int intArray[] = new int[5];

Программисты подсчитываются с нуля. Таким образом, это, например, выбрало бы ArrayIndexOutOfBoundsException, поскольку верхняя граница равна 4, а не 5.

intArray[5];
14
задан Matt 21 August 2008 в 19:49
поделиться

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 December 2019 в 13:48
поделиться

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

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

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

1
ответ дан Nicholas 22 August 2008 в 06:49
поделиться

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

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

0
ответ дан TheSmurf 22 August 2008 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: