2

XmlSerializer クラスを使用して xml ストリームを逆シリアル化するときに問題が発生します。

私はそのようなオブジェクトを持っています:

public class Test
{
  [XmlElement("data")]
  public AnotherObject Data
  {
    get; set;
  }

  // other properties
}

それを逆シリアル化しようとすると、正しく機能します。

<Test>
  <data>...</data>
  <something else... />
</Test>

ただし、xml が次のような場合:

<Test>
  <something else... />   
</Test>

新しく作成されたオブジェクトの Data プロパティを読み込もうとすると、コードは例外をスローします。オブジェクトを観察しようとすると、デバッガーは「例外を評価できませんでした」と出力します。

XML に対応するタグがなくても、プロパティが存在するようにします。

それは可能ですか?

ありがとう !

4

2 に答える 2

3

XML 逆シリアル化では、プロパティを設定する前に既定のコンストラクターを呼び出します。data逆シリアル化からロードされた場合に上書きされるデフォルト値にプロパティを設定できます。

于 2012-07-24T15:34:22.110 に答える
1

これが役立つかどうかを確認してください:

public class Test
{
  [XmlElement("data")]
  public System.Nullable<AnotherObject> Data
  {
    get; set;
  }

  // other properties
}

これにより、AnotherObject に対して null 値を受け入れることができ、基本的に Data を null にすることができます。

注: これはスキーマに大きく依存します。スキーマで null 値が防止されている場合、これは機能しません。詳細については、http: //msdn.microsoft.com/en-us/library/1t3y8s4s.aspxを参照してください。

于 2012-07-24T15:43:04.380 に答える