我正在研究领域事件,特别是两种可能性:
A. 使用这样的“通用”事件:
public class OrderStateChangedEvent : IEvent
{
public Guid OrderId { get; }
public OrderState NewState { get; }
}
然后消费者会找出新的状态并做一些事情。由于我使用的是 Rx,所以这并不难(并且比开关/外壳更好):
var subscription = DomainEvents
.AsObservable<OrderStateChangedEvent>()
.Where(e => e.NewState == OrderState.OrderCompleted)
.Subscribe(OnOrderCompleted);
B. 使用特定事件:
public class OrderCompletedEvent : IEvent
{
public Guid OrderId { get; }
}
这将导致更多的事件类,一方面可能会太多,另一方面事件类名称包含语言,这可能是一个加分点。
你有什么建议?我对领域事件没有经验,也无法在这里真正做出合格的决定(两者似乎都没有任何重大缺点)