2011-07-08 140 views
2

我是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; 
    } 
} 
+0

良好的格式是你的朋友。 –

回答

2

你90%在那裏,你缺的只是一件事。

在App.xaml.cs添加到您的Application_Startup

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

所以,現在你Application_Statup是這樣的,它會建立自己的容器,並允許您註冊類與容器放入您的注入類(ES)。並確保您正確處理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(); 
}