Зарегистрируйте открытые дженерики с приоритетом

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

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>>();
Другие вопросы по тегам