如何序列化对象id

时间:2014-07-03 00:05:24

标签: c# .net xml serialization

我有两个班级

[Serializable]
public class SimpleClass
{
    public ComplexClass Parent { get; set; }
}

public class ComplexClass
{
    public Guid Id { get; set; }
    // Lots of stuff
}

... 
// and somewhere    
public static List<ComplexClass> ClassesList;

如何序列化SimpleClass以便只从复杂类中保存Guid?之后如何反序列化?假设我已经拥有ComplexClass es的集合,只需要通过id选择一个。

我正在使用XmlSerializer进行序列化

2 个答案:

答案 0 :(得分:1)

包含命名空间System.Xml.Serialization并在要在序列化中排除的字段或属性上添加属性[XmlIgnore]。

答案 1 :(得分:0)

当然可以使用ISerializable进行自定义序列化,但是如果你想保持简单,那么这样的事情可能会有效:

public class SimpleClass
{
    [XmlIgnore]
    public ComplexClass Parent { get; set; }

    public Guid ComplexClassId { 
        get { return Parent.Id; } 
        set { Parent = new ComplexClass(value); } 
    }
}

或者只使用XmlIgnore标记ComplexClass中不需要的字段。


根据L.B.的评论,我更改了使用XmlIgnore代替NonSerialized的答案。在这里留下答案,因为我认为它仍然为Andypopa添加了一些信息。