为什么我们在CQRS的域对象中将属性集设置为私有

时间:2018-12-21 14:05:31

标签: c# asp.net-core architecture microservices

我有点困惑,为什么在下面将set设置为私有。我的困惑不是专门与私有属性有关,而是在域对象的上下文中,并从用户输入([FromForm])中获取它们

public class ObjectA
{
    public string Name { get; private set; }
    public string Title { get; private set; }

    public ObjectA(string name, string title)
    {
        Name = name;
        Title = title;
    }
}

但是实际上,当ObjectA与[FromBody]一起传递到控制器时,所有这些属性都被发送到构造函数中,从而自动破坏了private set的目的。

我想我还没有完全理解域对象中私有集的整个概念

1 个答案:

答案 0 :(得分:0)

设计DDD对象时这是常见规则。使对象不可变。属性值只能通过构造函数或公共方法在您的域内更改。这样可以帮助您更加专注于自己的域并避免产生副作用。

这些对象不是您提到的数据传输对象(DTO):[FromBody]