2014-02-19 84 views
0

我是新來的Unity(來自Castle Windsor的土地),所以我知道我想用依賴注入做什麼,我只是不確定如何使用Unity。如何使用Unity註冊多個類型的名稱?

指導將不勝感激。

,並進一步一些實現這樣的:

public class Strategy 
{ 
... etc 
} 

public class FooStrategy : Strategy 
{ 
... etc  
} 

public class BarStrategy : Strategy 
{ 
... etc  
} 

目前我可以註冊這些一個個像這樣的:

container.RegisterType<IStrategy, FooStrategy>("FooStrategy"); 
container.RegisterType<IStrategy, BarStrategy>("BarStrategy"); 

var foo = container.Resolve<IStrategy>("FooStrategy"); 
Assert.IsTrue(foo.GetType() == typeof (FooStrategy)); 

我該怎麼做更有效?我想通過它們的實現名稱來註冊所有實施IStrategy的類型。

+0

你想自動獲取所有實現並將它們註冊到容器中? – FireAlkazar

+0

是的,所以我不想像上面那樣逐個註冊我的類型,我想說'註冊所有實現IStrategy的類型,具體類型的名稱'結果將與上面相同。\ – shenku

回答

0
 container.RegisterTypes(AllClasses.FromLoadedAssemblies().Where(t => typeof(Strategy).IsAssignableFrom(t))); 

似乎默認在容器所使用的Name是實現名,所以它到底是相當瑣碎。

我唯一需要改變的是使用POCO作爲基本類型,而不是接口。

相關問題