Мне недавно пришлось обновить относительно большую библиотеку управления, которая использует 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);
}
У меня есть проблема с выше, что я должен использовать «реф» на все объекты на самом деле установить свойство, и я не могу использовать это на свойства напрямую.
Я бы предпочел сделать что-то в этом направлении, но я не думаю, что это возможно.
IBlogService _blogService = null;
IEmailService _emailService = null;
public Templates_BlogTemplate()
{
Inject(_blogService, _emailService);
}
У кого-нибудь есть идеи о том, как очистить код или сделать его более чистым? Я также хотел бы избежать атрибутов, поэтому он заставляет разработчика принимать решение о вводе переменной в определенную точку элемента управления.
Все мысли и чувства приветствуются.
Thanks
Я думаю, что отсутствие доступа к конструкции пользовательских элементов управления (неспособность изменить способ создания конструктора) является одной из неприятных вещей об элементах управления ASP.NET. Извините, у меня нет никакого полезного ответа. –