2016-05-27 5 views
0

私は、サードパーティライブラリのインスタンスをautofacを使って注入する必要があるシナリオを持っています。 Libraryは実装クラスを公開せず、インスタンスを取得するためのファクトリを提供します。プロパティまたはコンストラクタにautofacを使ってインプリメントする

サンプルコード

public class DBConnection 
{ 
    public IContext context { get; set; } 
    public string GetConnection() 
    { 
     return context.GetConfiguration("connectionString"); 
    } 
} 

IContextは、サードパーティ製のlibの一部であり、context = Configuration.Factory.GetContext();でAutofacを使用して初期化する必要があります。理想的にはインタフェース

答えて

0

として実装を返しますあなたはIContextを追加することができますので、より良い私はビルダーを使用して登録することはできませんので、DIコンテナIContext実装クラスが隠されていることにより、注入され得るために、私はDBConnectionコンストラクタでこの関数を呼び出すことができますが、IContextはシングルトンです

builder.Register(c => Configuration.Factory.GetContext()).As<IContext>(); 
DbConnection

public class DBConnection 
{ 

    public DbConnection(IContext context) 
    { 
     this.Context = context; 
    } 

    public IContext Context { get; } 
    public String GetConnection() 
    { 
     return this.Context.GetConfiguration("connectionString"); 
    } 
} 

そして、あなたはこのようなIContextを登録することができますへの依存など

関連する問題