0

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

public class ApiKeyHandler : DelegatingHandler
{
    private IApiService apiService;

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

初期化中:

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

どうすればこれを達成できますか?私のバインディングとすべてはすでにセットアップされています。

4

1 に答える 1

0

あなたはこのようなことをしたいです:

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

しかし、なぜApiKeyHandlerそれ自体を注入しませんか?

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

これがNinjectに関する記事です

基本的に、これをコードの最初に設定し、グローバルに利用できるようにします。

public IKernel kernel  = new StandardKernel();

..。

kernel.Bind<IApiService>()
      .To<SomeConcreteApiService>();
于 2012-04-05T03:51:31.863 に答える