如何只序列化对象id

本文关键字:对象 id 序列化 | 更新日期: 2023-09-27 18:11:09

我有两个类

[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 e,只需要按id选择一个。

我使用XmlSerializer进行序列化

如何只序列化对象id

包含命名空间System.Xml.Serialization,并在您希望在Serialization中排除的字段或属性上添加属性[XmlIgnore]。

当然可以使用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添加了一些信息。