为了账号安全,请及时绑定邮箱和手机立即绑定

DDD聚合根是否具有创建对象的静态方法是正确的

DDD聚合根是否具有创建对象的静态方法是正确的

C#
慕少森 2021-04-08 18:15:13
拥有这样的Create方法是否正确?还是应该在服务内创建用户。这会破坏DDD概念吗?在这种情况下,最佳做法是什么?注意:我也使用DI。  public class User : HistoryBase, IAggregateRoot    {        private IEnumerable<Role> _roles = new List<Role>();        public string Name { get; protected set; }        public string Lastname { get; protected set; }        public string Email { get; protected set; }        public string Password { get; protected set; }        public string EmployeeNumber { get; protected set; }        public bool Active { get; protected set; }        public int SiteID { get; protected set; }        public IEnumerable<Role> Roles { get { return _roles; } }        public static User Create(string name, string lastname, string email, string password, string employeeNumber, Site site)        {            var user = new User()            {                Name = name,                Lastname = lastname,                Email = email,                Password = password,                EmployeeNumber = employeeNumber,                SiteID = site.ID            };            return user;        }    }
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我会选择更清楚地说明您正在做什么的事情,而不是Create。您好像正在网站上注册员工。试着用措辞,好像将要使用该系统的人会说。


如果他们说“嘿,您将创建此用户”。然后,您的方法就可以了。


如果他们说:“嘿,您可以在我们的网站上注册此员工吗?” 然后,您应该使用:


public static Employee RegisterOnWebsite(string name, string lastname, string email, string password, string employeeNumber, Site site)

{

    // Creation Code

}

由于您拥有员工编号作为财产。看来此用户将永远是雇员。您应该对此有所清楚,并以此命名。现在,您的方法将显示为Employee.RegisterOnWebsite(...)。


查看完整回答
反对 回复 2021-04-10
  • 3 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信