我需要在Windsor Container中注册一个类型的开放泛型。这件事有什么作用?
container.Register(Component.For<IRepository<??>>().UsingFactoryMethod(x => x.Resolve<IDataContext>().GetRepository<??>()));
基本上,我想将IRepository注册为开放式泛型,然后根据传递的泛型类型从IDataContext创建存储库。这支持了吗?
答案 0 :(得分:2)
注册开放通用时使用非通用方法:
Component.For(typeof(IRepository<>))...
通过UsingFactoryMethod
解析时,您可以访问所请求的类型,因此您可以将类型传递给GetRepository
并根据类型(System.Type对象)解析存储库通过。
作为旁注,我必须说我觉得你的设计很不寻常。存储库保存对数据上下文的引用更为常见,而不是相反。也许你想再看一下设计呢?