Как внедрить несколько различных зависимостей, используя Unity IoC в шаблоне Chain-Of-Responsibility? - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над проектом, в котором я использую Unity, DI. Также я использую шаблон COR (Chain of Responsibility), который требует мое приложение. Я столкнулся с проблемой и застрял с DI. Я надеюсь, что кто-то пролил свет.

public interface IReport
{
    int ReportId {get; set;}
}

public Interface IHandler
{
    void Process(IReport report);
}

public class HandlerA : IHandler
{
    public IHandler Successor;
    public DependentX Xxx; 

    public HandlerA(IHandler successor)
    {
        Successor = successor;
    }

    public void Process(IReport report)
    {
        // Business logic goes here

        if(Successor != null)
        {
            Successor.Process(report);
        }
    }
}

public class HandlerB : IHandler
{
    public IHandler Successor;
    public DependentY Yyy;

    public HandlerB(IHandler successor)
    {
        Successor = successor;
    }

    public void Process(IReport report)
    {
        // Business logic goes here

        if(Successor != null)
        {
            Successor.Process(report);
        }
    }
}

public class HandlerC : IHandler
{
    public IHandler Successor;
    public DependentZ Zzz;
    public Repository repo;

    public HandlerC(IHandler successor)
    {
        Successor = successor;
    }

    public void Process(IReport report)
    {
        // Business logic goes here

        if(Successor != null)
        {
            Successor.Process(report);
        }
    }
}

Может ли кто-нибудь предложить, как внедрить зависимости DependentX, DependentY, DependentZ и Repository в эти обработчики в цепочке? Помните, что я упомянул только несколько зависимостей здесь. Некоторые обработчики имеют более одной зависимости.

Поскольку я не создаю явно экземпляры этих обработчиков для выполнения, и цепочка позаботится об этом, я понятия не имею, как внедрить эти зависимости. Обратите внимание, что зависимости каждого обработчика различны.

Любая помощь будет оценена.

Спасибо

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