【问题标题】:C# DTO with read only property具有只读属性的 C# DTO
【发布时间】:2013-12-12 23:34:39
【问题描述】:

我有以下课程:

[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 时将属性设置为只读?

【问题讨论】:

    标签: c# entity-framework asp.net-web-api dto


    【解决方案1】:

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

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

    不能使属性的 getter/setter 的限制性低于属性本身,例如

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

    【讨论】:

      【解决方案2】:

      您可以使用受保护的集合:

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

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

      【讨论】:

        【解决方案3】:
        [DataMember()]
            public int ID{ get; private set; }
        

        【讨论】:

          猜你喜欢
          • 2020-04-20
          • 2011-01-30
          • 2014-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-11
          相关资源
          最近更新 更多