2

我正在尝试使用 MediatR 设置通用通知,但通知处理程序被多次调用。

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

该测试发布了一个实现 ICustomNotification 的 CustomNotification。CustomNotificationHandler 被限制接受必须实现 ICustomNotification 的 TNotification。

我希望这只会被调用一次,但处理程序被调用了 3 次 - 其中 TNotification 是 CustomNotification、CustomNotificationBase 和 ICustomNotification - 但它们都是同一个实例......这应该发生吗?

如果我从 Autofac 注册中删除了 ContravariantRegistrationSource 行,那么它会按预期工作。同样,如果我使用 StructureMap 注册它工作正常。

我不完全明白为什么我需要启用逆变。我只使用这一行,因为它包含在 MediatR wiki 以及我能找到的几乎所有示例中。

请有人可以解释为什么会发生这种情况,如果我做错了什么,或者它是 Autofac 中的错误。谢谢。

4

0 回答 0