DataMember属性设置为字段或属性?

net*_*jor 6 c# attributes

我应该以哪种方式使用DataMemeber属性?

一世.

 [DataMember]
 internal protected string _FirstName="";

[DataMember]
public string FirstName { get { return _FirstName; } 
internal protected set { _FirstName=(value!=null?value:""); } }
Run Code Online (Sandbox Code Playgroud)

II.

internal protected string _FirstName="";

    [DataMember]
    public string FirstName { get { return _FirstName; } 
    internal protected set { _FirstName=(value!=null?value:""); } }
Run Code Online (Sandbox Code Playgroud)

III.

[DataMember]
internal protected string _FirstName="";


    public string FirstName { get { return _FirstName; } 
    internal protected set { _FirstName=(value!=null?value:""); } }
Run Code Online (Sandbox Code Playgroud)

ado*_*ntz 7

第一个肯定是不正确的,因为序列化将发生两次.在第二和第三之间我个人更喜欢第二,作为封装实现.