C# 序列化单元类的实例

C# 序列化单元类的实例,c#,serialization,C#,Serialization,我正在尝试序列化此类: [Serializable()] public class RadPaneSetting { public string ID; public string ParentID; public Unit Height; public Unit Width; public bool Collapsed; public PanePositions PanePosition; } 除了高度/宽度外,其他都写得很好。就在序列化之前,

我正在尝试序列化此类:

[Serializable()]
public class RadPaneSetting
{
    public string ID;
    public string ParentID;
    public Unit Height;
    public Unit Width;
    public bool Collapsed;
    public PanePositions PanePosition;
}
除了高度/宽度外,其他都写得很好。就在序列化之前,我可以将高度视为单位(400,UnitType.Pixel),但它不会将其写入XML文件

我的XML:

<Value>
  <RadPaneSetting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ID>RadPane_5c2c5136a0afaa4d65aa0adae5926751adf2</ID>
    <ParentID>RadDockSplitter_bc10266da61e0a4cb9a9814a0e94357d3d50</ParentID>
    <Height />
    <Width />
    <Collapsed>false</Collapsed>
    <PanePosition>Top</PanePosition>
  </RadPaneSetting>
</Value>

您需要自己序列化该类型。大概是这样的:

[XmlIgnore]
public Unit Height;

[XmlElement("Unit")]
public string HeightString
{
    get {return Height.ToString();}
    set {Height = Unit.Parse(value);}
}

请显示用于序列化的代码。另外,顺便说一句,
[Serializable]
对XML序列化程序并不重要。
[XmlIgnore]
public Unit Height;

[XmlElement("Unit")]
public string HeightString
{
    get {return Height.ToString();}
    set {Height = Unit.Parse(value);}
}