пример - save settings c#




Как включить раздел CDATA в ConfigurationElement? (2)

Я использую .NET Fx 3.5 и написал свои собственные классы конфигурации, которые наследуются от ConfigurationSection / ConfigurationElement. В настоящее время я заканчиваю тем, что выглядит так в моем файле конфигурации:

<blah.mail>
    <templates>
        <add name="TemplateNbr1" subject="..." body="Hi!\r\nThis is a test.\r\n.">
            <from address="[email protected]" />
        </add>
    </templates>
</blah.mail>

Я хотел бы иметь возможность выразить тело как дочерний узел template (который является add узлом в приведенном выше примере), чтобы в итоге получилось что-то похожее:

<blah.mail>
    <templates>
        <add name="TemplateNbr1" subject="...">
            <from address="[email protected]" />
            <body><![CDATA[Hi!
This is a test.
]]></body>
        </add>
    </templates>
</blah.mail>

В подклассе ConfigurationElement попробуйте переопределить SerializeElement с помощью XmlWriter.WriteCData, чтобы записать ваши данные и переопределить DeserializeElement с помощью XmlReader.ReadContentAsString, чтобы прочитать его.


В вашем пользовательском классе элемента конфигурации вам необходимо переопределить метод OnDeserializeUnrecognizedElement .

Пример:

public class PluginConfigurationElement : ConfigurationElement
{
    public NameValueCollection CustomProperies { get; set; }

    public PluginConfigurationElement()
    {
        this.CustomProperties = new NameValueCollection();
    }

    protected override bool OnDeserializeUnrecognizedElement(string elementName, XmlReader reader)
    {
        this.CustomProperties.Add(elementName, reader.ReadString());
        return true;
    }
}

Мне пришлось решить ту же проблему.







configuration-files