Ninject Пользовательский атрибут Inject - PullRequest
1 голос
/ 13 ноября 2010

Может ли кто-нибудь указать мне, как создать собственный атрибут «Впрыск» с помощью Ninject?

Я бы хотел сделать следующее:

  • InjectView - пользовательский атрибут «inject»

Когда свойство с этим атрибутом должно быть введено, введенное значение должно быть загружено из класса «ViewManager».

Я нашел пример с ISelector, чтобы решить, нужно ли вводить свойство / поле, однако я не мог найти, как добавить для этого собственную «стратегию внедрения» - я бы хотел делегировать внедрение фактического значение для моего ViewManager.

Ответы [ 2 ]

4 голосов
/ 13 ноября 2010

Это уже поддерживается и может быть сделано с простой настройкой ядра.

new StandardKernel(new NinjectSettings() { InjectAttribute = typeof(MyOwnInjectAttribute) };
3 голосов
/ 14 ноября 2010

Я решил эту проблему, добавив собственный IInjectionHeuristic, который позволяет вводить по моему пользовательскому атрибуту. Затем я также добавил пользовательский IBindingResolver, который добавляет дополнительную привязку для каждого типа, которая разрешается - эта привязка имеет проверку условия для настраиваемого атрибута, чтобы не нарушать предыдущие привязки ...

Привязки, созданные пользовательским IBindingResolver, устанавливают локальный «ProviderCallback», который использует извлеченное свойство и передает запрос внутреннему экземпляру ViewRegionManager.

Надеюсь, это поможет, если кто-то захочет сделать что-то подобное в будущем.

...