C#DTO具有只读属性
问题描述:
我有下面的类: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时,是否可以在该属性上设置属性来将属性设置为只读属性?
答
你总是可以让属性的访问更具体的你定义访问器。在代码中使用Id
。这可能是这样的:
[DataMember]
public int Id { get; private set; }
您不能使属性的getter/setter方法不是物业本身,例如限制较少
[DataMember]
private int Id { public get; set; }
答
[DataMember()]
public int ID{ get; private set; }
答
你可以使用一个保护套:
[DataMember()]
public int Id { get; protected set; }
,确保字段只在构造函数中设置...