Внедрение зарегистрированного класса с использованием Autofac - PullRequest
2 голосов
/ 08 июля 2011

Я новичок в Autofac и пытаюсь заставить работать мой первый проект, используя его.Я не уверен, как ввести зарегистрированного помощника из Autofac?Любая помощь будет оценена.

App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
{
    var builder = new ContainerBuilder();
    builder.Register(c => MyFactory.CreateHelper()).As<IHelper>();

    RootVisual = new MainWindow(...);
}

MainWindow.xaml.cs

public class MainWindow
{
   public IHelper IHelper {get;set;} 

   public MainWindow(IHelper helper)
   {
       iHelper = helper;
   }
}

1 Ответ

2 голосов
/ 08 июля 2011

Вы на 90%, вам не хватало только одного.

Добавьте это к вашему Application_Startup в App.xaml.cs

container = builder.Build();
RootVisual = new MainWindow(container.Resolve<IHelper>());

Так что теперь ваш Application_Statup будет выглядетьтаким образом, он создаст ваш контейнер и позволит вам внедрить зарегистрированные классы с контейнером в ваш класс (ы).И убедитесь, что вы правильно расположили контейнер на Application_Exit.

IContainer container;
private void Application_Startup(object sender, StartupEventArgs e)
{
    var builder = new ContainerBuilder();
    builder.Register(c => MyFactory.CreateHelper()).As<IHelper>();

    container = builder.Build() 
    RootVisual = new MainWindow(container.Resolve<IHelper>());
}

private void Application_Exit(object sender, EventArgs e)
{
     container.Dispose();
}
...