2009-01-07 19 views
8

.NET Fx 3.5 kullanıyorum ve ConfigurationSection/ConfigurationElement öğesinden devraldığım kendi yapılandırma sınıflarımı yazdım.Yapılandırma Öğesinde bir CDATA bölümünü nasıl ekleyebilirim?

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

I (yukarıdaki örnekte add düğümdür) template bir alt düğümü olarak vücudu ifade edebilmek istiyorum için: Şu anda benim yapılandırma dosyasında şöyle bir şey ile sona senin ConfigurationElement alt sınıfında

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

cevap

4

, verilerinizi yazmak için XmlWriter.WriteCData kullanarak geçersiz kılma SerializeElement deneyin ve geri okumak için XmlReader.ReadContentAsString kullanarak ağır basan DeserializeElement: benziyor şey ile son.

+0

Teşekkürler Bu bir şans vereceğim! – cfeduke

5

Özel yapılandırma öğesi sınıfınızda, OnDeserializeUnrecognizedElement yöntemini geçersiz kılmanız gerekir.

Örnek:

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; 
    } 
} 

Ben aynı sorunu çözmek zorunda kaldı.

+1

Bunun sanırım .net 4.5’de çalışıyor. Bu geçersiz kılmalar vurulmadan önce istisna atılır. – JoshBerke