2012-10-28 38 views
1

我找了一個以公約爲基礎的方式來替換下面一行在我的StructureMap註冊表:StructureMap自動註冊了超過1泛型接口

this.For<IMyFactory<ItemList, int>>().Use(x => x.GetInstance<GenericMyFactory<ItemList, int>>()); 

澄清

我是後是在一個具體的實例將在同一順序接口聲明的同一類型創建了一種自動註冊IMyFactory的方式。上面我已經宣佈的方式適用於僅ITEMLIST/INT組合 - 我想要的是一種與任意組合形式去做。

我發現其他SO職位,這似乎工作的偉大時,只有1要提供這種類型的方法,但我似乎無法找到一個當超過1類是通用的,將工作。以下給我一個編譯錯誤。

this.Scan(x => 
{ 
    x.TheCallingAssembly(); 
    x.AddAllTypesOf(typeof(IMyFactory<>)); 
    x.WithDefaultConventions(); 
}); 

來源:

StructureMap Auto registration for generic types using Scan

Structuremap and generic types

回答

2

可以在StructureMap註冊開放式泛型類型如下:

For(typeof(IMyFactory<,>)).Use(typeof(GenericMyFactory<,>))); 
+1

是這樣工作的,但有什麼辦法用Scan來做到這一點? – NightOwl888

+0

你爲什麼要掃描?只有一種類型需要映射。 – Steven