Wcf DataContract&;DataMember属性-它们如何影响类型

Wcf DataContract&;DataMember属性-它们如何影响类型,wcf,datacontract,Wcf,Datacontract,没有DataContract属性的类之间有什么区别: public class BankOperationResult { public int CurrentAmount { get; set; } public bool Success { get; set; } } [DataContract] public class BankOperationResult { [DataMember] public int Curren

没有DataContract属性的类之间有什么区别:

public class BankOperationResult
{        
    public int CurrentAmount { get; set; }
    public bool Success { get; set; }
}
[DataContract]
public class BankOperationResult
{        
    [DataMember]
    public int CurrentAmount { get; set; }
    [DataMember]
    public bool Success { get; set; }
}
和具有DataContract属性的同一类:

public class BankOperationResult
{        
    public int CurrentAmount { get; set; }
    public bool Success { get; set; }
}
[DataContract]
public class BankOperationResult
{        
    [DataMember]
    public int CurrentAmount { get; set; }
    [DataMember]
    public bool Success { get; set; }
}
我的意思是,WCF在编码时是否以不同的方式对待这两种类型

无论有没有这些属性,我的WCF服务都能正常工作


谢谢.NET 3.5 SP1之前的Pawel,如果您没有使用DataMember属性标记属性,那么它不会在WSDL中公开,也不会序列化。从.NET 3.5 SP1开始,将自动包含所有公共属性,因此您不再需要使用此属性装饰它们。

不幸的是,在3.5 SP1中,这并不是那么简单,但这是基本的想法。没有在类上定义任何DataContract或DataMember属性,所有字段和属性都将序列化为XML,这包括用于表单
public int MyValue{get;set;}
的自动属性的私有自动生成备份存储字段,并将其命名为
k_ubackingfield
。显式添加DataContract和DataMember属性将使DataContractSerializer放弃私有字段序列化。