シリアル化されたクラスを変更せずに XML シリアル化命令を追加する賢い方法はありますか?
デフォルトのシリアル化が気に入らず、クラスを変更できません。クラスを継承し、Shadows (VB.NET) を使用してプロパティを再実装する (シリアル化命令を使用) ことを検討していましたが、多くの重複コードが発生し、見栄えが悪くなります。
私が探している理想的な解決策は、基本的に、すべてのシリアル化命令を別のファイルに保存する方法です。
シリアル化されたクラスを変更せずに XML シリアル化命令を追加する賢い方法はありますか?
デフォルトのシリアル化が気に入らず、クラスを変更できません。クラスを継承し、Shadows (VB.NET) を使用してプロパティを再実装する (シリアル化命令を使用) ことを検討していましたが、多くの重複コードが発生し、見栄えが悪くなります。
私が探している理想的な解決策は、基本的に、すべてのシリアル化命令を別のファイルに保存する方法です。
XmlAttributeOverridesの使用を検討しましたか?
.NET Frameworkクラスライブラリ:XmlAttributeOverridesクラス
まず、ソースにアクセスできない場合でも、DLLで見つかったオブジェクトのシリアル化を制御および拡張できます。
次に、シリアル化可能なクラスの1つのセットを作成できますが、オブジェクトを 複数の方法でシリアル化します。たとえば、クラスインスタンスのメンバーをXML要素としてシリアル化する代わりに、それらをXML属性としてシリアル化することで、より効率的なドキュメントの転送が可能になります。
リフレクションを使用してクラスからすべてのプロパティの値を取得し、それらを属性として XmlNode に書き込みます。
PropertyInfo[] properties = control.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object o = property.GetValue(control, null);
// write value of o.ToString() out as an attribute on a XmlNode
// where attribute name is property.Name
}