无法使序列化信息出现在XML中

时间:2013-03-19 17:26:50

标签: c# serialization

我正在运行以下代码:

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但没有内部标记。我是序列化的新手,完全陷入困境。关于我做错了什么的建议?!

3 个答案:

答案 0 :(得分:2)

XmlSerializer不会序列化只读属性。尝试添加空的setter。

有关详细信息,请查看:Why are properties without a setter not serialized

答案 1 :(得分:2)

序列化只读属性没有意义。我会使Prop1Prop2读/写属性并在代码中设置它们。

答案 2 :(得分:1)

您使用的是只读属性。不。

我刚刚添加了空的setter来运行你的类,我得到了字符串中的数据。

[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 { } }
}