Ninject использует рефлексию?
От: debugx Россия http://oignatov.blogspot.com
Дата: 31.05.11 12:33
Оценка:
Всем привет,
кто-нибудь юзал ninject для устранения зависимостей?
Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?
Re: Ninject использует рефлексию?
От: Klikujiskaaan КНДР  
Дата: 31.05.11 13:21
Оценка:
Здравствуйте, debugx, Вы писали:

D>Всем привет,

D>кто-нибудь юзал ninject для устранения зависимостей?
D>Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?
Чисто из спортивного итереса: чем не устраивает Unity?
Re: Ninject использует рефлексию?
От: Jack128  
Дата: 31.05.11 15:20
Оценка:
Здравствуйте, debugx, Вы писали:

D>Всем привет,

D>кто-нибудь юзал ninject для устранения зависимостей?
D>Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?

а что, если какие то другие варианты???
Re[2]: Ninject использует рефлексию?
От: femidav  
Дата: 31.05.11 16:46
Оценка: +2
Здравствуйте, Klikujiskaaan, Вы писали:

K>Здравствуйте, debugx, Вы писали:


D>>Всем привет,

D>>кто-нибудь юзал ninject для устранения зависимостей?
D>>Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?
K>Чисто из спортивного итереса: чем не устраивает Unity?
А чем должен устраивать Unity? Отсутствием документации?
Re: Ninject использует рефлексию?
От: Ziaw Россия  
Дата: 31.05.11 17:38
Оценка:
Здравствуйте, debugx, Вы писали:

D>кто-нибудь юзал ninject для устранения зависимостей?


Инъекция != устранение.

D>Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?


Для начала объясните, что значит "запросил интерфейс"?
Re[2]: Ninject использует рефлексию?
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 31.05.11 20:08
Оценка:
Здравствуйте, Jack128, Вы писали:

J>а что, если какие то другие варианты???


Можно напрямую метаданные читать.
Обычно это гораздо эффективнее
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[3]: Ninject использует рефлексию?
От: Jack128  
Дата: 31.05.11 20:21
Оценка:
Здравствуйте, xvost, Вы писали:

X>Здравствуйте, Jack128, Вы писали:


J>>а что, если какие то другие варианты???


X>Можно напрямую метаданные читать.

X>Обычно это гораздо эффективнее

Свой аналог System.Reflection что ли реализовать? Что то маловероятно, чтоб хоть одна DI-либа этим занималась.
Re[4]: Ninject использует рефлексию?
От: k.o. Россия  
Дата: 31.05.11 21:13
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, xvost, Вы писали:


X>>Здравствуйте, Jack128, Вы писали:


J>>>а что, если какие то другие варианты???


X>>Можно напрямую метаданные читать.

X>>Обычно это гораздо эффективнее

J>Свой аналог System.Reflection что ли реализовать? Что то маловероятно, чтоб хоть одна DI-либа этим занималась.


Зато, ничто не мешает использовать ту же Cecil, в которой это уже реализовано.
Re[3]: Ninject использует рефлексию?
От: Ziaw Россия  
Дата: 01.06.11 05:16
Оценка:
Здравствуйте, xvost, Вы писали:

X>Можно напрямую метаданные читать.

X>Обычно это гораздо эффективнее

Читать метаданные можно, но в DI надо не только прочитать сигнатуру конструктора (делается один раз), но и вызвать его (делается много раз).
Re[4]: Ninject использует рефлексию?
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 01.06.11 17:56
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Читать метаданные можно, но в DI надо не только прочитать сигнатуру конструктора (делается один раз), но и вызвать его (делается много раз).


Метаданные можно (и нужно) использовать на этапе исследования компонент и графа зависимостей. Через метаданные это делается на 2 порядка быстрее чем через рефлексию. После исследования, ес-но, все создавать и вызывать уже через рефлексию надо.

P.S. Все это имеет смысл когда кол-во классов в сборках начинает превышать десяток тысяч.
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[2]: Ninject использует рефлексию?
От: -VaS- Россия vaskir.blogspot.com
Дата: 01.06.11 17:56
Оценка: :)
D>>кто-нибудь юзал ninject для устранения зависимостей?

Z>Инъекция != устранение.


А "инъекция" != разрешение зависимостей.
Re[2]: Ninject использует рефлексию?
От: debugx Россия http://oignatov.blogspot.com
Дата: 02.06.11 06:11
Оценка:
Здравствуйте, Klikujiskaaan, Вы писали:

K>Здравствуйте, debugx, Вы писали:


D>>Всем привет,

D>>кто-нибудь юзал ninject для устранения зависимостей?
D>>Я бы его заюзал, да смущает одно, как он узнает что какой-то класс запросил такой-то интерфейс? не через рефлексию ли случаем?
K>Чисто из спортивного итереса: чем не устраивает Unity?
не юзал еще, сейчас посмотрю...
Re[2]: Ninject использует рефлексию?
От: debugx Россия http://oignatov.blogspot.com
Дата: 02.06.11 06:14
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Для начала объясните, что значит "запросил интерфейс"?


метод или конструктор класса принимает в качестве параметра ссылку с типом интерфейса. При этом сам объект этого интерфейса ему никто не передает (кроме ninject разумеется

А вообще кто-нибудь юзал ninject в серьезных проектах? Или эта тулза так чисто на поиграться?
Re[3]: Ninject использует рефлексию?
От: Ziaw Россия  
Дата: 03.06.11 03:20
Оценка:
Здравствуйте, debugx, Вы писали:

Z>>Для начала объясните, что значит "запросил интерфейс"?


D>метод или конструктор класса принимает в качестве параметра ссылку с типом интерфейса. При этом сам объект этого интерфейса ему никто не передает (кроме ninject разумеется


Правильно поставленный вопрос содержит половину ответа. Узнать в рантайме типы параметров можно через рефлексию или чтение метаданных. Я не знаю ни одного DI фреймворка который бы читал метаданные, слишком тяжелое решение.

D>А вообще кто-нибудь юзал ninject в серьезных проектах? Или эта тулза так чисто на поиграться?


Конкретно ninject не юзал. Но в большинстве проектов юзал либо готовое решение либо похожий велосипед. Не представляю как управлять зависимостями без этого. Для поиграться DI фреймворк не нужен вообще.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.