Я новичок в использовании Autofac, поэтому извиняюсь, если это глупый вопрос.Создание экземпляра Autofac без параметров
Предположим, что у меня есть абстрактный класс FooBase с безпараметрическим конструктором и его реализация под названием Foo.
В моем клиентском коде AP.Net MVC5 я хотел бы иметь возможность создать экземпляр объекта типа FooBase (я установил Autofac для его решения в Foo). Срок действия и объем этого экземпляра ограничены моим методом, и я хотел бы сделать это так, как это можно было бы назвать фабричным методом.
В настоящее время я использую DependencyResolver, но это кажется немного надуманным. Есть ли более простой способ сделать это?
Например, вот что она в настоящее время выглядит ...
public void SendMessage()
{
var foo = DependencyResolver.Current.GetService<FooBase>();
Debug.WriteLine(foo.Name);
}
Я ищу что-то немного больше, как это ...
public void SendMessage()
{
var foo = IoC.Resolve<FooBase>();
Debug.WriteLine(foo.Name);
}
Разве вы не можете просто добавить 'Resolve' шаблонный метод на свой класс' DependencyResolver', который, в свою очередь говорит, что 'this.Current.GetService <...>()'? В другом примечании вы не можете ввести 'Foo' в конструктор вашего класса? Это позволит вам отказаться от использования шаблона «ServiceLocator», что означало бы, что вам не нужно было бы вызывать «GetService» в середине метода, поскольку все ваши зависимости будут разрешены до того, как будет создан класс? –
Привет. Нет, к сожалению, ни одна инъекция конструктора или инъекция свойств не будут подходящими в этом случае. Класс содержит логику времени выполнения, которая решает, когда должен быть создан экземпляр нового экземпляра класса или когда существующая версия должна быть «взята» из другого места. –
@ StephenRoss Я пытался выяснить, есть ли у Autofac уже стандартный способ сделать это, прежде чем катиться самостоятельно. –