2013-05-30 38 views
0

我試圖註冊的通用類,如下所示:在Autofac中,是否可以爲非通用接口註冊泛型?

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

WindowContext<T> : IWindowContext

上述登記導致上構建一個ArgumentException服務「Inforbase.Presentation.IWindowContext」不是打開泛型類型定義。

預期的行爲是最接近組合根的WindowContext<T>的依賴關係將定義在該生存期範圍內的任何IWindowContext已解析的實例。

我意識到這個概念有點奇怪,並且在同一生命週期範圍內的兩個類請求不同類型的WindowContext<T>具有奇怪的邊緣情況。在我的情況下,錯誤或覆蓋都可以接受。

Autofac可能嗎?

+0

我仍然想知道爲什麼這是不可能的,開放泛型可能被用作另一個類實例中的非泛型依賴項,而不僅僅是組合根。 – nietras

回答

0

我剛纔意識到我所要求的並沒有什麼意義。距離依存關係圖中組成根最遠的對象是需要首先創建的對象,並且它們將無法解析IWindowContext,因爲在解決此問題時,具體類型IWindowContext wouldn'目前尚未確定。

最好的出路是通過使WindowContext非泛型來重組類結構。幸運的是,這只是一個實驗,並不是我在架構中實際需要的。

相關問題