2011-05-12 95 views
2

我有一個Web服務,它將返回一個List,其中Person是一個DTO。是否有任何理由我不應該定義個人似的:ASP.NET Web服務DTO屬性vs公共變量

public class Person { 
    public string Name; 
    public string Email; 
} 

,而不是

public class Person { 
    private string _name; 
    public string Name { 
     get { 
     return _name; 
     } 
     set { 
     _name = value; 
     } 
    } 
} 

第二個版本是更詳細的,我看不出有任何理由公共實例變量可能是一個問題這裏。任何可能的原因?

回答

1

一般來說 - 這是一個設計決定 - 請參閱:http://forums.asp.net/t/1233827.aspx 但是DTO的實現稍有不同。由於這只是一個DTO,並且沒有設置/獲取屬性特定實現的行爲,因此您可以使用不太詳細的方法。任何實現更改都不需要客戶端重新編譯,因爲無論是哪種情況,它們都將以相同的方式通過服務進行序列化,所以您的較小實現很好。但是,如果客戶端要將這些類用於數據綁定,那麼它們需要是類中的屬性。字段不會被綁定。

2

屬性優於字段以支持

  • 結合;字段無法綁定
  • 多態性;你不能這樣做public virtual string Name;

您可以使用自動屬性來減少冗長

public class Person { 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 
+0

雖然沒有定義哪種服務技術 - 有些代理類是作爲字段生成的,而不是屬性。 – 2011-05-12 18:57:56

0

除了所有其他的答案,性質允許驗證,跑出當從讀取屬性或寫入。使用字段時需要做更多的工作。