2013-11-27 45 views
1

我有下面的類:C#DTO具有隻讀屬性

[DataContract()] 
public partial class User 
{ 
    [DataMember()] 
    public int Id { get; set; } 

    [DataMember()] 
    public string Name { get; set; } 

    [DataMember()] 
    public string Surname { get; set; } 
} 

我的DTO類是在一個集會和我的模型(EF)是另一種。因此所有的屬性必須是公開的get/set。

該Id是一個標識列,由db設置,也自動映射。不過,我不希望用戶更改ID。

當用戶使用dto時,是否可以在該屬性上設置屬性來將屬性設置爲只讀屬性?

回答

1

你總是可以讓屬性的訪問更具體的你定義訪問器。在代碼中使用Id。這可能是這樣的:

[DataMember] 
public int Id { get; private set; } 

不能使屬性的getter/setter方法不是物業本身,例如限制較少

[DataMember] 
private int Id { public get; set; } 
1

你可以使用一個保護套:

[DataMember()] 
public int Id { get; protected set; } 

,確保字段只在構造函數中設置...