Правильная реализация фабричного паттерна с использованием DI - PullRequest
2 голосов
/ 07 мая 2020

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

Пока «фабрика» выглядит так:

class ViewConstructor<TView> :IViewConstructor<TView>
    where TView : class, IView
{
    private readonly IIocContainer _iocContainer;

    public ViewConstructor(IIocContainer iocContainer)
    {
        _iocContainer = iocContainer;
    }

    public TView Construct()
    {
        return _iocContainer.GetInstance<TView>();
    }
}

Дело в том, что я знаю, что использование IocContainer где угодно, но не в составе root - это плохо . Так что я предполагаю, есть ли какой-нибудь «чистый» способ реализовать это. Подводя итог, я хочу иметь возможность получать НЕСКОЛЬКО экземпляров IView с завода.

1 Ответ

0 голосов
/ 06 июля 2020

Я нашел ответ в сообщении: { ссылка } Кажется, это решение может заключаться в создании представления с использованием «нового» на заводе.

К сожалению, для того, чтобы используйте generi c factory, каждое представление должно иметь конструктор по умолчанию. В противном случае вам понадобятся специализированные фабрики для каждого вида.

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