«Список инъекций» в Unity? - PullRequest
       56

«Список инъекций» в Unity?

1 голос
/ 08 декабря 2008

У меня есть проект, который будет включать подключение к одной или нескольким системам через один и тот же интерфейс; давайте назовем это IBacksideProvider.

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

Это сообщение в блоге предполагает, что это может быть сделано, однако. Мне интересно, если кто-то сделал это или имеет идею, как работать с Unity, чтобы иметь возможность сделать это. ТИА.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2008

Есть причина, почему это не сработает? http://msdn.microsoft.com/en-us/library/cc440943.aspx

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

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>();
1 голос
/ 07 апреля 2009

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

0 голосов
/ 15 декабря 2008

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

...