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>

templatebody を子ノード(上記の例のノード)として表現して、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

カスタム構成要素クラスでは、メソッドをオーバーライドする必要があります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 に答える