JOlivers CommonDomainとEventStoreをNServiceBusとしてテストしています。JOlivers CommonDomainとEventStoreでeventとしてのinterfaceを使用する方法は?
private void Apply(IPhoneNumberChanged phoneNumberChangedEvent)
{
this.Number = phoneNumberChangedEvent.Number;
}
残念ながら、これは動作しません。後で私はこのハンドラを持って、その後
RaiseEvent(bus.CreateInstance<IPhoneNumberChanged>(m => { m.Number = number; }));
そして:私はこのような私の集計でイベントを発生させる必要があります。私は例外が発生します: "CommonDomain.Core.HandlerForDomainEventNotFoundException: 'Phone'タイプの集合体が 'IPhoneNumberChanged'タイプのイベントを発生させましたが、ハンドラがメッセージを処理するために見つかりませんでした。"
ここでの問題は、純粋な具象クラスで動作するため、 "bus.CreateInstance"から作成されたオブジェクトです。しかし私はインターフェイスとして私のイベントが必要です。これは解決できますか?
編集:ちょうど注 - 私はオブジェクトを作成するために "bus.CreateInstance"を使用する必要はありません、それは私が現在 'IPhoneNumberChanged'を上げる必要がある最も簡単な(唯一の)方法です。他の方法でも大丈夫です - 私はハンドラの引数としてインターフェイスを持っている限り。お使いの携帯電話の集計のために、あなたのコンストラクタで
こんにちはジョナサン、残念ながらそれは動作しません。私はそれをデバッグし、名前は同じですが(IPhoneNumberChanged)型はありません。 Bus.CreateInstanceから構築された型は "MyDomain .__ Impl.IPhoneNumberChanged"であり、登録された型は "MyDomain.IPhoneNumberChanged"です。また、「MyDomain__Impl.IPhoneNumberChanged」は実行時に作成されるため、CommonDomainに登録することはできません。どんなアドバイスですか? – Werner
"this.Register(Type、action)"は基本的に私が探しているものだと思いますか?または、別の解決策がありますか? – Werner
第2の考えでは、最後のコメントを忘れてしまいます。このような登録は、イベントオブジェクトが作成されるたびに行われなければならない。 – Werner