Зарегистрируйте открытые дженерики с приоритетом
Можно ли использовать единство так:
container.Register(typeof(IMyType<car>), typeof(MyType1<car>));
container.Register(typeof(IMyType<>), typeof(MyType2<>));
.. так что когда я пытаюсь решить IMyType<car>
Я получаю MyType1<car>
... но когда я пытаюсь решить IMyType<bus>
я получил MyType2<bus>
? Или, возможно, другой способ сделать то же самое, чтобы определенный универсальный имел приоритет над открытым универсальным?
1 ответ
Решение
Да, вы можете сделать именно это:
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>>();