Зарегистрируйте открытые дженерики с приоритетом - PullRequest
3 голосов
/ 08 июня 2011

Можно ли использовать единство так:

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

.. так что когда я пытаюсь разрешить IMyType<car>, я получаю MyType1<car> ... но когда я пытаюсь разрешить IMyType<bus>, я получаю MyType2<bus>? Или, может быть, другой способ сделать то же самое, чтобы определенный универсальный имел приоритет над открытым универсальным?

1 Ответ

5 голосов
/ 08 июня 2011

Да, вы можете сделать именно это:

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>>();
...