2012-04-05 11 views
0

クラスを手動で初期化するときにコンストラクタインジェクションを行うにはどうすればよいですか?コンストラクタインジェクションを使用したNinject手動初期化

public class ApiKeyHandler : DelegatingHandler 
{ 
    private IApiService apiService; 

    public ApiKeyHandler(IApiService apiService) 
    { 
     this.apiService = apiService; 
    } 
} 

初期化:

var apiKey = new ApiKeyHandler(/*inject here */); 

がどのように私はこれを実現するのですか?私のバインディングとすべてが既にセットアップされています。

答えて

0

あなたはこのような何かをしたい:

var apiKey = new ApiKeyHandler(kernel.Get<IApiService>()); 

しかし、なぜApiKeyHandler自体を注入していませんか?

var apiKey = kernel.Get<ApiKeyHandler>(); 

Here is an article about Ninject

あなたは基本的にあなたのコードの先頭でこれを設定したいし、それが利用できる世界的に持っている:

public IKernel kernel = new StandardKernel(); 

...

kernel.Bind<IApiService>() 
     .To<SomeConcreteApiService>(); 
+0

どのように行います'kernel'オブジェクトを探しますか? –

+0

@ Lolcoder私は元の答えの下にもう少し具体例を示しましたが、より強く理解するために他のチュートリアルをチェックしたいと思うかもしれません。 –

関連する問題