特定のクラスをシリアル化/逆シリアル化するとき、特定のプロパティに CDATA 要素としてフラグを立てたりマークしたりする必要があることに遭遇しました (その内容のため)。私は現在これを次のように処理しています:
<XmlElement("MessageText")> _
Public Property XmlContentLeft() As XmlCDataSection
Get
Dim doc As New XmlDataDocument()
Dim cd As XmlCDataSection = doc.CreateCDataSection(Me.MessageText)
Return cd
End Get
Set(ByVal value As XmlCDataSection)
Me.MessageText = value.Value
End Set
End Property
<XmlIgnore()> _
Public Property MessageText() As String
Get
Return _messageText
End Get
Set(ByVal value As String)
_messageText= value
End Set
End Property
これはうまく機能しますが、欠点もあります。CDATA 要素にしたいものに対して重複するプロパティがあり、これらのプロパティに対して追加のコードを記述する必要があります。
だから私の質問は、これを行うためのより良い方法があるかどうかです? クラスごとにカスタム スキーマやシリアル化ルーチンを作成する必要はありません。理想的なシナリオでは、これらのプロパティに属性を追加して、自動的に CDATA 要素として扱われるようにすることができます。