NServiceBusでJOlivers CommonDomain と EventStore を使用してテストを行っています。Aggregate で次のようにイベントを発生させる必要があります。
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」を上げる必要がある最も簡単な(唯一の)方法です。ハンドラーに引数としてインターフェイスがある限り、他の方法も素晴らしいでしょう。