在Windsor容器中注册泛型类型

时间:2010-08-23 16:11:53

标签: c# generics castle-windsor

我需要在Windsor Container中注册一个类型的开放泛型。这件事有什么作用?

container.Register(Component.For<IRepository<??>>().UsingFactoryMethod(x => x.Resolve<IDataContext>().GetRepository<??>()));

基本上,我想将IRepository注册为开放式泛型,然后根据传递的泛型类型从IDataContext创建存储库。这支持了吗?

1 个答案:

答案 0 :(得分:2)

注册开放通用时使用非通用方法:

Component.For(typeof(IRepository<>))...

通过UsingFactoryMethod解析时,您可以访问所请求的类型,因此您可以将类型传递给GetRepository并根据类型(System.Type对象)解析存储库通过。

作为旁注,我必须说我觉得你的设计很不寻常。存储库保存对数据上下文的引用更为常见,而不是相反。也许你想再看一下设计呢?

豫ICP备18024241号-1