2016-08-21 7 views
4

私は私のWEBAPIプロジェクトで、次のリゾルバを持っている:コンソールアプリケーションでUnityResolverを使用するには?

config.DependencyResolver = new UnityResolver(container); // HttpConfiguration config 

は、しかし、コンソールアプリでは、私がHttpContigurationを持っていません。コンソールアプリケーションからこのDependencyResolverを使用するように統一コンテナに指示するにはどうすればよいですか?

答えて

5

もっと良い方法があるかもしれませんが、私の登録を行い、"最初の"クラスを解決させてください。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Registering dependencies ..."); 
     var container = new UnityContainer(); 
     container.RegisterType<ProgramStarter, ProgramStarter>(); // Register a class that continues your program. 

     // Do your registrations. 
     RegisterTypes(container); 

     // Let Unity resolve ProgramStarter and create a build plan. 
     var program = container.Resolve<ProgramStarter>(); 

     Console.WriteLine("All done. Starting program..."); 
     program.Run(); 
    } 
} 

および私のProgramStarterクラスです。

public class ProgramStarter 
{ 
    private readonly IService _service; 

    public ProgramStarter(IService service) 
    { 
     // Unity has created this instance and resolved all dependencies. 
     _service= service; 
    } 

    public void Run() 
    { 
     // Do what you want to do. 
    } 
} 
3

あなたはしません。 UnityResolverは、MVCフレームワークと対話するために存在します。コンソールアプリケーションはフレームワークではなく、コンソールアプリケーションが作成しようとするフレームワークタイプはありません。フレームワークがないため、コンソールアプリケーションでDIコンテナを使用するための特別なフックは必要ありません。コンテナを作成し、container.Resolveという1つの呼び出しでオブジェクトグラフを作成し、解決されたオブジェクトでメソッドを呼び出すだけです。

関連する問題