0

(vb.net/c#/etc)

少し逆シリアル化の魔法を行う方法を理解するのに苦労しています。現在、列挙型を含む標準の逆シリアル化は正常に機能しますが、属性をクラスに変換したいと考えていますおー!私は何を考えていました!

私のxmlは次のようになります。

....
<review user="..." version="2.2">...</review>

そして、これは私のプロパティ/クラス用です:

[XmlAttribute("version")]
public MyVersion Version { get; set; }

class MyVersion  {
    // equality overloaded
    // can ctype() from string to MyVersion
    // constructor that takes a single string, etc
}

文字列プロパティをこのクラスに自動的に逆シリアル化できるように、シリアライザーをどのように支援できますか? MyVersion クラスを何らかの方法で変更する必要がありますか、またはプロパティの定義を変更する必要がありますか?

  • OnDeserialized などのメソッドをオーバーライドする必要はありません。このプロジェクトには価値がありません

これがデフォルトの xml デシリアライザーで実行できない場合は、それを知っておくだけで十分です。よくないことがたくさんあるので、驚かないでください。

ありがとう!

4

2 に答える 2

1

これは、宣言的な方法ではサポートされていません。親クラス (要素にシリアル化されるクラス) に IXmlSerializable を実装し、文字列と MyValue 型の間の変換を手動で実行する必要があります。

于 2009-01-07T19:33:24.033 に答える
0

これは非常に簡単に実行できます-逆シリアル化アクションとしてではありません。

XSD を使用して、逆シリアル化用のクラスを作成します。現在、これらはすべて部分クラスであるため、レビュー クラスの新しい部分 (属性「バージョン」を含む) を記述し、バージョンを取得/設定するメソッドを追加できます。

get メソッドでは、そのクラスの新しいインスタンスを簡単に作成し、set メソッドでは、提供されたバージョン クラスから既存のバージョンを簡単に更新します。

于 2009-01-07T19:46:58.670 に答える