我创建了一个可序列化的对象,我希望将其序列化为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序列化方案。
答案 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; }
}