0

我正在尝试注册一个通用类,如下所示:

builder.RegisterGeneric(typeof(WindowContext<>))
    .AsSelf()
    .As<IWindowContext>()
    .InstancePerLifetimeScope();

( WindowContext<T> : IWindowContext)

上述注册导致ArgumentException构建:服务“Inforbase.Presentation.IWindowContext”不是开放的泛型类型定义。

WindowContext<T>预期的行为是对最接近组合根的依赖项将定义IWindowContext为该生命周期范围内的任何实例解析的实例。

我意识到这个概念有点奇怪,并且有一个奇怪的边缘情况,即同一生命周期范围内的两个类请求不同类型的WindowContext<T>. 在我的场景中,错误或覆盖都是可以接受的。

Autofac可以做到这一点吗?

4

1 回答 1

0

我刚刚意识到我所问的并没有真正的意义。依赖图中离组合根最远的对象是需要首先创建的对象,它们无法解析IWindowContext,因为在它们被解析时,具体类型IWindowContext不会有尚未定义。

最好的出路可能是通过使 WindowContext 非泛型来重组类结构。幸运的是,这只是一个实验,而不是我的架构中真正需要的东西。

于 2013-05-30T12:46:08.777 回答