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のバグなのかを誰かが説明してください. ありがとう。