|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Привет. Подскажите как в Autofac, имея IContainer, получить все сервисы зарегистрированные и реализующие конкретный интерфейс. Мне нужно не достать какой-то один из них, а взять все, что были кем-то зарегистрированы, и последовательно вызвать каждый из них. Т.е. имеем такой код: Код: c# 1. 2. 3.
а мне нужно взять все, что реализуют IDeviceState - не зная имен, и вообще количества - и пройтись по ним через foreach. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 21:29 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Чтобы 2 раза не вставать. У каждого из этих элементов, имеется определенный аттрибут. Можно ли через Autofac создавать не через Keyed, Named, а через значение аттрибута. Т.е. имеем классы Код: c# 1. 2. 3. 4. 5.
Можно ли отрезолвить резолвить по значению аттрибута MyAttr ? PS. Первый вопрос для меня приоритетней. Второй чисто для интереса :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 21:36 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 04:32 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 04:34 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1. 2.
Это к чему ? Не нужно Named использовать что ли ? Но оно мне нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 12:23 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
ProBiotekАлексей К Код: c# 1. 2.
Это к чему ? Не нужно Named использовать что ли ? Но оно мне нужно.Ну если нужно, то что мешает попробовать? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 12:26 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Алексей К, Мне вот этот кажется подойдет (проверяю) Код: c# 1.
Я не понял для чего приведено Код: c# 1. 2.
Регистрировать на один интерфейс различные сервисы, без возможности их фильтровать перед созданием (через named, keyed) мне кажется бессмысленным. Так мы лишаемся возможности указать, что создавать. Если нам нужен будет какой-то один, мы будем вынуждены создать все (траты на создание, инициализацию !), чтобы потом найти нужный - через какое-то его свойство, типа Name. Вот и спросил, в чем смысл данной конструкции. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 12:55 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1.
К сожалению так не заработало... Возвращает пустой список ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 14:00 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Может я не так регистрирую ? Код: c# 1.
в документации показан такой пример Код: c# 1.
но он не компилируется - ругается, что метод Register требует 1 параметр. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 14:21 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Причем Код: c# 1. 2. 3.
Что я делаю не так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 14:25 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
ProBiotekРегистрировать на один интерфейс различные сервисы, без возможности их фильтровать перед созданием (через named, keyed) мне кажется бессмысленным.Ну всякие бывают случаи. Я бы не был столь категоричным. :-) ProBiotekПричем Код: c# 1. 2. 3.
Что я делаю не так ?Если что-то не получается, то нужно читать инструкию . :-) Supported Relationship TypesA needs all the kinds of B IEnumerable<B>, IList<B>, ICollection<B> Enumeration ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 16:03 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Вот эта регистрация работает. нашел у себя ошибку. Регистрировал один интерфейс, а запрашивал другой - поэтому резолвинг по имени ничего и не возвращал. Это исправил. Собственно теперь имею следующее: Код: c# 1. 2. 3.
Вот это странно. Один контейнер. По имени резолвит все правильно. Но при запросе общего списка, ничего не возвращает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 17:00 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Доп. Убрал регистрацию по имени, и заработал резолвинг списка по интерфейсу (Resolve<IEnumerable<IMyService>>). Таким образом подозреваю, что при регистрации через именованные службы, не получится их потом перечислить. Кто нибудь может это подтвердить у себя быстрым тестом ? Может я сильно ошибаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 17:18 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Полный пример кода, если кто-то может помочь. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 18:34 |
|
Autofac ResolveNamed но получить все зарегистрированные компоненты для интерфейса. Как ?
|
|||
---|---|---|---|
#18+
Рабочее решение, если кому пригодится: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
использовать либо Код: c# 1.
либо Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2016, 12:09 |
|
|
start [/forum/topic.php?fid=20&fpage=68&tid=1400883]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 147ms |
0 / 0 |