C# 如何仅序列化对象id

C# 如何仅序列化对象id,c#,.net,xml,serialization,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> Clas

我有两节课

[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
{
公共ComplexClass父级{get;set;}
}
公共类ComplexClass
{
公共Guid Id{get;set;}
//很多东西
}
... 
//在某处
公共静态列表ClassesList;
如何序列化
SimpleClass
,以便从复杂类中只保存
Guid
?之后如何反序列化它?假设我已经有了
ComplexClass
es的集合,只需要根据id选择一个


我正在使用
XmlSerializer
进行序列化

包括名称空间System.Xml.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
而不是
非序列化的
。将答案留在这里,因为我认为它仍然为Andypopa添加了一些信息。

非序列化的
仅对非属性的字段有效+XmlSerializer不使用它。看来你是对的,非序列化仅适用于二进制和SOAP序列化程序。