我正在使用带有 NServiceBus 的JOlivers CommonDomain 和 EventStore 进行测试。我需要像这样在我的聚合中引发一个事件:
RaiseEvent(bus.CreateInstance<IPhoneNumberChanged>(m => { m.Number = number; }));
然后我有这个处理程序:
private void Apply(IPhoneNumberChanged phoneNumberChangedEvent)
{
this.Number = phoneNumberChangedEvent.Number;
}
不幸的是,这不起作用。我收到一个异常:“CommonDomain.Core.HandlerForDomainEventNotFoundException:'Phone' 类型的聚合引发了 'IPhoneNumberChanged' 类型的事件,但找不到处理程序来处理消息。”。
这里的问题是从“bus.CreateInstance”创建的对象,因为它适用于纯具体的类。但我需要我的事件作为接口。这可以解决吗?
编辑:请注意 - 我不必使用“bus.CreateInstance”来创建对象,这只是我目前必须提高“IPhoneNumberChanged”的最简单(唯一)的方法。任何其他方式也很好——只要我在处理程序中有一个接口作为参数。