Ключевые фабрики делегатов с параметрами конструктора во время выполнения?

Допустим, у меня есть следующие сервис и компоненты:

public interface IService
{
    void DoWork();
}

public class ServiceA : IService
{
    private readonly string _name;

    public ServiceA(string name)
    {
        _name = name;
    }

    public void DoWork()
    {
        //ServiceA DoWork implementation
    }
}

public class ServiceB : IService
{
    private readonly string _name;

    public ServiceB(string name)
    {
        _name = name;
    }

    public void DoWork()
    {
        //ServiceB DoWork implementation
    }
}

Обратите внимание, что каждый компонент принимает параметр конструктораname, Также скажем, чтоname определяется во время выполнения.

Я просматривал документацию AutoFac, чтобы попытаться найти безопасный для типов способ разрешения таких компонентов, не обращаясь к контейнеру напрямую. Если бы у меня была только одна реализацияIService тогда я мог бы просто использоватьФабрика делегатов передать параметр времени выполнения конструктору. Тем не менее, у меня есть две реализации, и та, которая должна использоваться, также должна быть определена во время выполнения. Если бы у меня не былоname параметр конструктора, то я могзарегистрировать два компонента по ключу и разрешить с помощью IIndex

Я не могу понять, как сделать оба. Есть ли способ, которым я могу каким-то образом объединить использование делегатских фабрик иIIndex разрешение компонента? Или есть другой способ регистрации и разрешения обоих компонентов без прямой ссылки на контейнер?

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

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