使用MediatR和Autofac ContravariantRegistrationSource的多个通知

时间:2018-01-16 11:04:26

标签: autofac contravariance mediatr

我正在尝试使用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中的错误。感谢。

0 个答案:

没有答案