8

我正在使用 .NET Fx 3.5 并编写了自己的配置类,这些配置类继承自 ConfigurationSection/ConfigurationElement。目前,我最终在我的配置文件中得到了如下所示的内容:

<blah.mail>
    <templates>
        <add name="TemplateNbr1" subject="..." body="Hi!\r\nThis is a test.\r\n.">
            <from address="blah@hotmail.com" />
        </add>
    </templates>
</blah.mail>

我希望能够将主体表示为template(上add例中的节点)的子节点,最终得到如下所示的内容:

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

2 回答 2

5

在您的自定义配置元素类中,您需要覆盖 method 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;
    }
}

我不得不解决同样的问题。

于 2009-01-21T12:35:28.657 回答
4

在您的 ConfigurationElement 子类中,尝试使用 XmlWriter.WriteCData 覆盖 SerializeElement 以写入数据,并使用 XmlReader.ReadContentAsString 覆盖 DeserializeElement 以将其读回。

于 2009-01-17T20:02:56.517 回答