2

MediatR を使用して一般的な通知を設定しようとしていますが、通知ハンドラーが複数回呼び出されています。

https://github.com/smartaypants/MediatR/blob/master/test/MediatR.Tests/CustomNotificationTests.cs

テストは、ICustomNotification を実装する CustomNotification を発行します。CustomNotificationHandler は、ICustomNotification を実装する必要がある TNotification を受け入れるように制限されています。

これは 1 回だけ呼び出されると予想されますが、ハンドラーは 3 回呼び出されます (TNotification は CustomNotification、CustomNotificationBase、および ICustomNotification です)。しかし、それらはすべて同じインスタンスです。

Autofac 登録から ContravariantRegistrationSource 行を削除すると、期待どおりに動作します。同様に、StructureMap 登録を使用すると、正常に動作します。

反変性を有効にする必要がある理由が完全にはわかりません。MediatR wiki に含まれており、私が見つけることができるほとんどすべての例があるため、私はこの行のみを使用しています。

なぜこれが起こっているのか、私が何か間違ったことをしているのか、それともAutofacのバグなのかを誰かが説明してください. ありがとう。

4

0 に答える 0