使用默认属性的 DataContractSerializer
DataContractSerializer using default properties
最近,当我阅读 DataContractSerializer 的默认行为时,我从 MSDN 得到了 rules,但是我不明白我提取的第一条规则如下:
The DataContractSerializer infers a data contract from types without attributes using the default properties of the newly created types.
这句话怎么解释,有明白的大神帮忙看看,我知道"without attributes",属性是DataContract属性,但是"default properties"指的是什么。自定义类型中是否有一个叫做 "default properties" 的东西?
如果您在另一个具有 [DataContract]
属性的 class 中引用了类型,那么 DataContractSerializer 将序列化引用的类型,即使它没有被赋予 [DataContract]
属性。序列化将发生在所有 public 属性上,除非 属性 归因于 [IgnoreDataMember]
.
例如:
[DataContract]
public class ClassA
{
public ClassB MyData { get; set; }
public string SomeString { get; set; }
public int SomeNumber { get; set; }
}
public class ClassB
{
public string SomeOtherInfo { get; set; }
public int SomeOtherNumber { get; set; }
}
在上面的代码中,ClassB 将根据其默认属性进行序列化,在本例中是所有 public 属性:"SomeOtherInfo" 和 "SomeOtherNumber".
最近,当我阅读 DataContractSerializer 的默认行为时,我从 MSDN 得到了 rules,但是我不明白我提取的第一条规则如下:
The DataContractSerializer infers a data contract from types without attributes using the default properties of the newly created types.
这句话怎么解释,有明白的大神帮忙看看,我知道"without attributes",属性是DataContract属性,但是"default properties"指的是什么。自定义类型中是否有一个叫做 "default properties" 的东西?
如果您在另一个具有 [DataContract]
属性的 class 中引用了类型,那么 DataContractSerializer 将序列化引用的类型,即使它没有被赋予 [DataContract]
属性。序列化将发生在所有 public 属性上,除非 属性 归因于 [IgnoreDataMember]
.
例如:
[DataContract]
public class ClassA
{
public ClassB MyData { get; set; }
public string SomeString { get; set; }
public int SomeNumber { get; set; }
}
public class ClassB
{
public string SomeOtherInfo { get; set; }
public int SomeOtherNumber { get; set; }
}
在上面的代码中,ClassB 将根据其默认属性进行序列化,在本例中是所有 public 属性:"SomeOtherInfo" 和 "SomeOtherNumber".