Разрешение зависимости частного поля через DI - PullRequest
0 голосов
/ 18 февраля 2020

Я работаю над проектом Asp. Net MVC, который определяет собственный базовый класс абстрактного контроллера, от которого должны наследоваться будущие контроллеры. Контроллер определяется следующим образом:

public abstract class ControllerBase : Controller
{
    private IWorkContextFactory _workContextFactory;
    private WorkContext _workContext;

    public WorkContext WorkContext
    {
        _workContext = _workContext ?? _workContextFactory.BuildContext();
        return _workContext;
    }
}

Класс WorkContext предоставляет полезную информацию, такую ​​как идентификатор зарегистрированного пользователя, роль пользователя и т. Д. c. Вышеупомянутый класс, а также класс WorkContext определены в проекте веб-фреймворка, который является проектом библиотеки классов. На веб-фреймворк ссылается другой проект, который является настоящим Asp. Net веб-проектом. Веб-проект Asp. Net содержит несколько классов для работы с внедрением зависимостей, таких как преобразователь (который является реализацией интерфейса IDependencyResolver MVC, и устанавливается в качестве средства разрешения зависимостей при запуске приложения с System.Web.Mvc.DependencyResolver.SetResolver ).

Теперь я хочу разрешить зависимость IWorkContextFactory. Единственная проблема заключается в том, что проект веб-фреймворка не будет ссылаться на веб-проект, поэтому я не могу получить экземпляр средства разрешения зависимостей. Я также подумал о внедрении свойств, но сначала мне нужно было бы добавить ссылку на проекты Ninject (которую я использую для DI-фреймворка) в моем проекте веб-фреймворка, чтобы использовать атрибут [Inject], а во-вторых, мне пришлось бы изменить видимость IWorkContextFactory, который должен быть закрытым.

Поскольку у меня заканчиваются идеи для решения этой проблемы, я теперь прошу помощи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...