【发布时间】:2017-04-10 04:22:11
【问题描述】:
这个问题是我之前的问题DryIOC Decorator and InResolutionScopeOf的后续问题
我要做的是在 IAsyncRequestHandler 和 IAsyncNotificationHandler 的解析范围内创建 EF DbContext 实例,这意味着在请求中注入的上下文不能与在通知中注入的上下文相同(从请求中发布) .由于通知是从请求处理程序内部发布的,因此这种嵌套给我想要的设置带来了一些麻烦。
值得注意的是,在给定 IAsyncRequestHandler 或 IAsyncNotificationHandler 实例中注入的每个 DbContext 在它们自己的装饰器中都需要相同。
我创建了一个 dotnetfiddle 并尝试设置 https://dotnetfiddle.net/KiFCHY。 (我在这个例子中省略了装饰器)
它包含一个 RequestHandler,它在被调用时打印一条消息,然后它发布一个通知,该通知打印另一条消息。但是,如您所见,通知没有被调用,因为 MediatR 无法获取 IAsyncNotificationHandler 实例(因为它无法解析 DbContext)。
这种设置可行吗?
谢谢
【问题讨论】:
-
正在寻找问题,但目前只是粗略的猜测。一有线索就会添加答案。
-
@dadhi,我相信问题在于 MultiInstanceFactory 注册,它使用 ResolveMany 解决,而不是 Resolve。在这种情况下,使用 ResolveMany 似乎无法正确解决依赖关系。我编辑了小提琴并添加了注释行dotnetfiddle.net/KiFCHY
-
一个很好的发现!会从中挖掘。