0

シリアル化されているオブジェクトがあり、「バージョン」プロパティを追加したいと考えています。

私が欲しいのは:

  1. コードで作成された新しいオブジェクトには、「最新」バージョンを指定する必要があります (どこかで定義されています)。
  2. xml に version プロパティを持たない逆シリアル化されたオブジェクトには、「バージョン 1」のラベルを付ける必要があります。

  3. xml にバージョン プロパティがあるデシリアライズされたオブジェクトは、xml にあるバージョンを使用する必要があります。

例 (疑似コード):

const string LatestVersion = "2";
class Foo {
   public String version {get; set; }
}

var foo = new Foo();
foo.version == "2"
serialize(foo) ->  "<foo><version>2</version></foo>";

foo = deserialize("<foo></foo>")
foo.version == "1";

foo = deserialize("<foo><version>2</version>");
foo.version == "2";

foo = deserialize("<foo><version>3</version>");
foo.version == "3";
4

1 に答える 1

0

追加:

[XmlIgnore]
public bool versionSpecified {get;set;}

値がある場合、これは (XmlSerializer 自体によって) true に設定されます。ただし、シリアル化中に trueを報告する必要もあります。そうでない場合、値は含まれません。


おそらくもっと簡単な方法:

private string _version;
public string version {
    get { return _version ?? "1"; } // the default value
    set { _version = value; }
}

次に、フィールドが null かどうかを確認します。

于 2013-04-25T17:20:20.563 に答える