我正在尝试注册一个泛型类,如下所示:
builder.RegisterGeneric(typeof(WindowContext<>))
.AsSelf()
.As<IWindowContext>()
.InstancePerLifetimeScope();
(WindowContext<T> : IWindowContext
)
上述注册导致构建ArgumentException
:服务'Inforbase.Presentation.IWindowContext'不是开放的泛型类型定义。
预期的行为是对最接近组合根的WindowContext<T>
的依赖性将定义为该生命周期范围内的任何IWindowContext
解析的实例。
我意识到这个概念有点奇怪,并且有一个奇怪的边缘情况,即同一生命周期范围内的两个类请求不同类型的WindowContext<T>
。在我的场景中,错误或覆盖都是可以接受的。
这可以用Autofac吗?
答案 0 :(得分:0)
我刚才意识到我所要求的并没有多大意义。离依赖关系图中离组合根最远的对象是需要首先创建的对象,并且它们无法解析IWindowContext
,因为在它们被解析时,具体类型IWindowContext
的{{1}}尚未定义。
最好的方法可能是通过使WindowContext非泛型来重新组织类结构。幸运的是,这只是一个实验,而不是我在架构中实际需要的东西。