Экземпляр твердости - Autofac

Я пытаюсь выяснить, как разрешить экземпляр где-нибудь в коде.

При запуске приложения я зарегистрировал тип

static void Main()
{    
    var builder = new ContainerBuilder();
    builder.RegisterType<Foo>().As<IFoo>();
}

Теперь, как я могу разрешить экземпляр где-нибудь в коде?

В StructureMAP существует статический объект ObjectFactory.GetInstance<IFoo>()

8
задан user247702 24 September 2015 в 08:27
поделиться

1 ответ

Прочтите Начало работы . Это должно помочь вам начать.

Прежде всего, вы ищете контейнер . Создайте его из ContainerBuilder , как в этом простом приложении WinForms:

static void Main()
{
    using (var container = builder.Build())
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        var mainForm = container.Resolve<MainForm>();
        Application.Run(mainForm)
    }
}

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

Если во всем приложении соблюдается шаблон DI, вам нужно только прикоснуться к контейнеру при запуске.

Как вы разрешаете самый верхний экземпляр, во многом зависит от того, какой тип приложения вы создаете. Если это веб-приложение, интеграция ASP.Net и интеграция MVC позаботятся об этом за вас. (В конце концов, самый верхний экземпляр в ASP.Net - это Приложение , которое находится вне нашего контроля).

С другой стороны, если это консольное приложение или приложение WinForms, вы должны вручную разрешить первый экземпляр в Main , как в моем примере выше.

13
ответ дан 5 December 2019 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: