1

私は次のコードを実行しています:

public String Serialize()
{
  XmlSerializer serializer = new XmlSerializer(typeof(SomeInformation));
  StringWriter writer = new StringWriter();
  serializer.Serialize(writer, new SomeInformation());
  String output = writer.ToString();
  return output;
}

次のようにシリアル化されます。

[XmlRoot("MyRoot")]
public class SomeInformation
{
  public SomeInformation() { }

  [XmlElement("SomeNode1")]
  public String Prop1 { get { return "Some prop 1"; } }

  [XmlElement("SomeNode2")]
  public String Prop2 { get { return "Some prop 2"; } }
}

文字列にXMLが含まれていますが、内部タグはありません。私はシリアル化に不慣れで、完全に立ち往生しています。私が間違っていることについて何か提案はありますか?!

4

3 に答える 3

2

XmlSerializer は、読み取り専用プロパティをシリアル化しません。それらに空のセッターを追加してみてください。

詳細については、セッターのないプロパティがシリアル化されない理由をご覧ください。

于 2013-03-19T17:31:10.930 に答える
2

読み取り専用プロパティをシリアル化しても意味がありません。プロパティを作成Prop1してProp2読み書きし、コードで設定します。

于 2013-03-19T17:31:12.547 に答える
1

読み取り専用プロパティを使用しています。しないでください。

空のセッターを追加してクラスを実行したところ、文字列にデータが取得されました。

[XmlRoot("MyRoot")]
public sealed class SomeInformation
{
  public SomeInformation() { }

  [XmlElement("SomeNode1")]
  public String Prop1 { get { return "Some prop 1"; } set { } }

  [XmlElement("SomeNode2")]
  public String Prop2 { get { return "Some prop 2"; } set { } }
}
于 2013-03-19T17:35:47.183 に答える