使用Autofac注入已注册的类

时间:2011-07-08 12:55:49

标签: .net autofac

我是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 个答案:

答案 0 :(得分:2)

你在那里90%,你只缺少一件事。

将其添加到App.xaml.cs

中的Application_Startup
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();
}