1

У меня есть проект, который будет связан с подключением к одному бэкэнд-системам через один и тот же интерфейс; давайте назовем его IBacksideProvider.«Список инъекций» в единстве?

Я хотел бы использовать Unity для внедрения этих поставщиков во время выполнения. Проблема в том, что, поскольку мы говорим о 1 ... n бэкэнд-системах, мне нужно будет зарегистрировать 1 ... n реализации IBacksideProvider. Unity не поддерживает это из коробки.

This blog post предполагает, что это можно сделать, однако. Мне интересно, сделал ли кто-нибудь это или есть идея, как работать с Unity, чтобы иметь возможность сделать это. ТИА.

+0

Этот ответ, вероятно, помогает: http://stackoverflow.com/a/6317570/928531 – 2013-08-21 10:59:51

ответ

2

Любая причина, по которой это не сработает? http://msdn.microsoft.com/en-us/library/cc440943.aspx

Чтобы получить список экземпляров объектов из контейнера на основе названных регистраций, используйте метод ResolveAll и указать значение для типа объекта (типа регистрации). Метод ResolveAll возвращает IEnumerable общий список нестандартных (именованных) типов, которые вы можете перебирать в коде для проверки каждого объекта.

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>(); 
+0

Мне нужно будет проверить это ... – Will 2008-12-09 16:50:07

0

LinFu.IOC поддерживает IEnumerable < Т > и IList < Т > инъекции для конструкторов, свойств, методов, и даже полей, все прямо из коробки. AFAIK, это один из немногих контейнеров в этом блоге, который, в частности, фактически поддерживает переполнение списка.

1

Unity поддерживает преобразование массива с версией 1.2, которая была выпущена в ноябре 2008 года или около того. Это лучшее, что вы можете сделать в данный момент, не прибегая к инъекции контейнера единства в ваши объекты.

Смежные вопросы