我正在使用Unity IoC容器,並且需要攔截任何調用以解析某個基本接口,然後運行我自己的自定義代碼來構造這些類型。Unity的自定義對象工廠擴展
換句話說,在下面的示例代碼中,當我調用container.Resolve<IFooN>()
時,如果它沒有得到具體實現類型的實例,則調用MyFactoryFunction
來構造一個,否則我希望它返回緩存副本。
標準統一容器無法構造這些對象(更新:,因爲它們是.NET遠程對象,所以具體的類不會在本地計算機上的任何組件存在),而我不希望先創建它們並用RegisterInstance存儲它們。
interface IFoo : IBase { ... }
interface IFoo2 : IBase { ... }
...
container.Resolve<IFoo2>();
...
IBase MyFactoryFunction(Type t)
{
...
}
我假設我能創造一個團結的擴展要做到這一點,但我不知道是否已經有一個解決方案在那裏我可以借用。
原因是我們使用.NET Remoting來創建類。所以我們不能簡單地調用它的構造函數 - 客戶端上的任何程序集中都不存在具體類型。我們必須連接到服務器,並請求它的對象來滿足有問題的接口。 – 2009-09-04 20:08:10