Мне недавно пришлось обновить относительно большую управляющую библиотеку, которая использует Ninject 1.0 до Ninject 2.0, чтобы помочь решить некоторые проблемы, которые у меня были с 1.0. Обновление прошло успешно, и я думаю, что Ninject 2.0 намного быстрее.
Однако, чтобы попытаться избежать этой проблемы в будущем, я создал свой собственный интерфейс для ввода полей и свойств (который по сути будет вызывать методы для контейнера IOC, который я хочу использовать в текущем веб-приложении). Так что теперь моя управляющая библиотека не зависит от какого-либо конкретного контейнера IOC, который ускорит любые изменения в этой области в будущем.
Мне было интересно, кто-нибудь еще делал то же самое?
Я доволен тем, чего он достиг, но в идеале я хотел бы обновить его. В своих элементах управления я часто создаю эти внедренные поля как защищенные и устанавливаю их в конструкторе для этого элемента управления.
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(ref _blogService);
Inject(ref _emailService);
}
Проблема, с которой я столкнулся, заключается в том, что мне нужно использовать «ref» для всех объектов, чтобы фактически установить свойство, и я не могу использовать это непосредственно для свойств.
Я бы предпочел сделать что-то подобное, но я не думаю, что это возможно.
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(_blogService, _emailService);
}
У кого-нибудь есть идеи, как оптимизировать код или сделать его более понятным? Я также хотел бы избегать атрибутов, поэтому он заставляет разработчика принимать решение ввести переменную в определенный момент в элементе управления.
Все мысли и чувства приветствуются.
Спасибо