DDD:即使所有字段都为空,也始终创建 ValueObject

DDD: Always create ValueObject even with all fields null

场景

我的域不需要城市和街道字段。

我有一个 ValueObject

public class Address : ValueObject
{
     public string City { get; private set; }

     public string Street { get; private set; }

     public Address(string city, string street)
     {
        City = city;
        Street = street;
     }
}

我有一个使用 ValueObject 的 Root 实体

public class MyRoot : RootEntity
{
     public string Name { get; private set; }
 
     public Address Address { get; private set; }

     public MyRoot(string name, Address address)
     {
          Name = name;
          Address = address;  // TODO Create with null fields if address is null ?
     }
}

问题

  1. 如果传入 null new Address(null,null),我是否应该创建地址值对象?
  2. 一般来说,有创建 ValueObject 的最佳实践(始终、在请求时等)?

Should I create the Address ValueObject if is passed null new Address(null,null)?

不,如果根对象没有要存储的地址,您应该将地址 属性 设置为空。

你的代码没有问题。