Является ли Autofac IComponentContext.Resolve <Type>шаблоном поиска служб - PullRequest
0 голосов
/ 12 декабря 2018

В недавнем обзоре кода я обнаружил преобразователь класса с помощью IComponentContext, как показано в следующем примере:

using Autofac;

public class BaseClass
{
    protected IComponentContext _componentContext;
    public BaseClass(IComponentContext componentContext)
    {
        _componentContext = componentContext;
    }
}

public class MyClass1: BaseClass
{
   protected IMyClass2 _myClass2 = _componentContext.Resolve<MyClass2>();
   public void Operation1()
   {
        _myClass2.Operation2();
   }
}

Мне кажется, что приведенный выше код разрешает MyClass2 вне конструктора Class1 ().Разве это не шаблон поиска услуг и не разорение МОК?

1 Ответ

0 голосов
/ 13 декабря 2018

Да, это пример использования шаблона поиска услуг.Чтобы исправить это, ваш BaseClass не должен принимать IComponentContext (чтобы гарантировать отсутствие другого расположения службы), а MyClass1 должен принимать параметр конструктора типа IMyClass2.

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