Простой Инжектор: фабричные классы, которые должны создавать классы с зависимостями

У меня есть фабричный класс, который создает пару разных типов классов. Фабрика зарегистрирована с контейнером. Каков рекомендуемый способ создания классов внутри фабрики, учитывая, что они также имеют зависимости. Я явно хочу избежать зависимости от контейнера, но если я добавлю новые классы, они победят.не использовать контейнер. например

public class MyFactory
{
    public IMyWorker CreateInstance(WorkerType workerType)
    {
        if (workerType == WorkerType.A)
              return new WorkerA(dependency1, dependency2);

        return new WorkerB(dependency1);

    }
}

Таким образом, вопрос в том, откуда мне взять эти зависимости.

Одним из вариантов может быть сделать их зависимыми от фабрики. например

public class MyFactory
{
    private Dependency1 dependency1;
    private Dependency2 dependency2;

    public MyFactory(Dependency1 dependency1, Dependency2, dependency2)
    {
        this.dependency1 = dependency1; this.dependency2 = dependency2;
    }

    public IMyWorker CreateInstance(WorkerType workerType)
    {
        if (workerType == WorkerType.A)
              return new WorkerA(dependency1, dependency2);

        return new WorkerB(dependency1);

    }
}

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

public class MyFactory
{
    private IWorkerA workerA;
    private IWorkerB workerB;

    public MyFactory(IWorkerA workerA, IWorkerB, workerB)
    {
        this.workerA = workerA; this.workerB = workerB;
    }

    public IMyWorker CreateInstance(WorkerType workerType)
    {
        if (workerType == WorkerType.A)
              return workerA;

        return workerB;

    }
}

При первом варианте я чувствую, что вывожу на фабрику зависимости рабочих. Со вторым вариантом рабочие создаются при создании фабрики.

Мысли?

Ответы на вопрос(4)

Ваш ответ на вопрос