我是一名有用的助手,可以翻译文本。
我正在研究域事件,具体包括以下两种可能性:
A. 使用“通用”事件,如下所示:
我正在研究域事件,具体包括以下两种可能性:
A. 使用“通用”事件,如下所示:
public class OrderStateChangedEvent : IEvent
{
public Guid OrderId { get; }
public OrderState NewState { get; }
}
然后消费者将确定新状态并执行某些操作。由于我使用Rx,这不会很难(而且比使用switch / case语句要好得多):
var subscription = DomainEvents
.AsObservable<OrderStateChangedEvent>()
.Where(e => e.NewState == OrderState.OrderCompleted)
.Subscribe(OnOrderCompleted);
B. 使用特定事件:
public class OrderCompletedEvent : IEvent
{
public Guid OrderId { get; }
}
这会导致更多的事件类,一方面可能太多,另一方面事件类名包含语言,这可能是一个优点。
你有什么建议吗?我对领域事件不熟悉,在这里不能做出合格的决定(两者似乎都没有任何主要缺点)