2010-08-23 57 views
1

我需要在我的Windsor容器中註冊類型的開放泛型。這個東西是如何工作的?在Windsor容器中註冊泛型類型

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

基本上,我要註冊IRepository開放通用,然後創建基於傳遞泛型類型從IDataContext庫。這是否支持?

回答

2

當註冊開放式泛型使用非泛型方法:

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

當通過UsingFactoryMethod解決您可以訪問所請求的類型,所以你可以通過類型你GetRepository和解決基礎信息庫在你傳遞的類型(System.Type對象)上。

作爲一個旁註,我必須說我覺得你的設計很不尋常。存儲庫容納對數據上下文的引用更常見,而不是相反。也許你會想再看看設計呢?

+0

感謝您的回答......我對設計有所瞭解,問題在於我正在使用傳統API,這些事情似乎是相反的方式! – 2010-08-24 05:25:42

+0

那麼恐怕除非你有'getRepository'的非泛型重載'methodInfo.MakeGenericMethod()。Invoke()' – 2010-08-24 06:13:12

相關問題