2011-06-07 51 views
3

是否可以使用統一像這樣:註冊開仿製藥與優先順序

container.Register(typeof(IMyType<car>), typeof(MyType1<car>)); 
container.Register(typeof(IMyType<>), typeof(MyType2<>)); 

..所以,當我嘗試解決IMyType<car>我得到一個MyType1<car> ......但是當我嘗試解決IMyType<bus>我得到MyType2<bus>?或者,也許另一種方式來做同樣的事情,以便定義的泛型優先於開放泛型?

回答

5

是的,你就可以這樣做:

IUnityContainer container = new UnityContainer(); 

container.RegisterType(typeof(IMyType<Car>), typeof(MyType1<Car>)); 
container.RegisterType(typeof(IMyType<>), typeof(MyType2<>)); 

// Returns MyType1<Car>: 
IMyType<Car> car = container.Resolve<IMyType<Car>>(); 

// Returns MyType2<Bus>: 
IMyType<Bus> bus = container.Resolve<IMyType<Bus>>();