微服务
按照这种方法,我无法将IUserService接口注入我的CreateUserCommandHandler(循环引用)。 显然这不是正确的方法,您将如何重组此文件夹组织?
public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, bool>
{
private readonly IEventBus _bus;
// private readonly IUserService _userService; cannot access this
public CreateUserCommandHandler(IEventBus bus)
{
_bus = bus;
}
public Task<bool> Handle(CreateUserCommand request, CancellationToken cancellationToken)
{
_bus.Publish(new UserCreatedEvent(request.Name, request.Email));
return Task.FromResult(true);
}
}
答案 0 :(得分:2)
处理程序类通常是应用程序项目的一部分。
域实体不应与任何其他项目有任何依赖关系。应该将它们视为您项目的核心。他们的唯一职责是包装业务逻辑并确保其状态始终保持一致。
服务可以表示应用程序服务和域服务。域服务应该是域项目的一部分。 Domain vs application services
我会将命令和事件类放在API项目中。
因此,在您的情况下,Domain项目将具有一个User
类,该类包装用户的所有业务逻辑,存储库接口表示持久性抽象,最后是User域服务,以便能够在多个逻辑之间进行协调用户实体。