如何将对象的属性序列化为XML元素的属性?

时间:2013-11-15 17:18:22

标签: c# xml serialization

我创建了一个可序列化的对象,我希望将其序列化为XML,然后再反序列化。我想要的是将此对象的一个​​属性保存为XML属性。这就是我的意思:

[Serializable]
public class ProgramInfo
{
    public string Name { get; set; }
    public Version Version { get; set; }
}

public class Version
{
    public int Major { get; set; }
    public int Minor { get; set; }
    public int Build { get; set; }
}

我想将ProgramInfo保存为XML文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<ProgramInfo Name="MyApp" Version="1.00.0000">

</ProgramInfo>

注意Version属性及其在XML中的相应属性。我已经有解析器将字符串“1.00.0000”转换为有效的Version对象,反之亦然,但我不知道如何将它用于此XML序列化方案。

2 个答案:

答案 0 :(得分:2)

您需要的是用于序列化的字符串表示的属性:

[Serializable]
public class ProgramInfo
{
    [XmlAttribute]
    public string Name { get; set; }

    [XmlIgnore]
    public Version Version { get; set; }

    [XmlAttribute("Version")
    public string VersionString 
    { 
      get { return this.Version.ToString(); } 
      set{ this.Version = Parse(value);}
    }
}

答案 1 :(得分:1)

您可以做的是拥有VersionValue和VersionType属性

[Serializable]
public class ProgramInfo
{
  private string _versionValue;
  public string Name { get; set; }
  public string VersionValue 
  { 
    get
    {
      return _versionValue;
    }
    set{
       _versionValue = value;
       //Private method to parse
       VersonType = parseAndReturnVersionType(value);

       } 
  }
  public Version VersionType { get; set; }
}