2011-07-08 17 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%です。

だから今、あなたのApplication_Statupは次のようになりますApp.xaml.cs

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

であなたのApplication_Startupにこれを追加し、それはあなたのコンテナを構築し、あなたがあなたの中にコンテナに登録するクラスを注入することができますクラス)。 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(); 
} 
関連する問題