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序列化程序。