在《实现 DDD》一书中,提到了创建TenantId
值对象。这对我来说很有意义,因为 aGUID
可能是空的,它不是有效的TenantId
,所以通过创建一个TenantId
值对象,我可以防止这种情况(我还有其他值对象,如Name
, PhoneNumber
,EmailAddress
等):
public class TenantId
{
public TenantId(Guid id)
{
this.SetId(id);
}
public Guid Id { get; private set; }
private void SetId(Guid id)
{
if (id == Guid.Empty)
{
throw new InvalidOperationException("Id must not be an empty GUID.");
}
this.Id = id;
}
}
我感兴趣的是,我应该还是不应该TenantId
在服务方法上使用它,例如:
TenantId tenantId = new TenantId(model.TenantId); // model.TenantId being a GUID.
this.tenantService.GetTenant(tenantId);
或者我应该在服务方法参数中使用更原始的形式:
this.tenantService.GetTenant(model.TenantId); // again model.TenantId is a GUID.
这本书似乎有时以一种方式,有时另一种方式。人们对这些方法的优缺点有何看法?