繁体   English   中英

具有只读属性的C#DTO

[英]C# DTO with read only property

我有以下课程:

[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)在另一个程序集中。 因此,所有属性都必须是公共获取/设置的。

Id是一个标识列,由db设置并自动映射。 但是,我不希望用户更改ID。

当用户使用dto时,是否可以在属性上设置一个属性以将属性设置为只读?

您可以使用受保护的集:

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

并确保仅在构造函数中设置字段...

在定义访问器时,始终可以使属性的访问更加具体。 使用代码中的Id 可能看起来像这样:

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

不能使属性的getter / setter限制比属性本身的约束少,例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM