使用默认属性的 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".