この質問は、特にNinjectとは関係ありません。これは一般的なコーディングの質問ですが、私がやろうとしていることよりも、Ninjectで問題を完全に処理するためのより良い方法があるかもしれない場合に備えて、ここに投稿します。
Global.asaxのインスタンスから、Ninject標準カーネルにグローバルにアクセスできるかどうかを知りたいです。
コードは次のとおりです。
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
// MVC global registration, routing and filtering code goes here...
}
protected override IKernel CreateKernel()
{
return Container;
}
private static IKernel Container
{
get
{
IKernel kernel = new StandardKernel();
kernel.Load(new ServiceModule(), new RepositoryModule());
return kernel;
}
}
}
いくつかのクラスがある場合、たとえば、コントローラーとインターフェイスしないファサードクラスがあり、依存関係チェーンを開始したい場合、私の理解では、次を使用する必要があります。
_className = kernel.Get<IClassName>();
ただし、これを行うために私が知っている唯一の方法は、Ninject Standardカーネルの新しいインスタンスを作成することですが、正しく理解している場合は、基本的にNinjectカーネルの新しいインスタンスを作成することはお勧めできません。 2番目のカーネル。
それで、アプリケーションの開始時にGlobal.asaxでインスタンス化された既存のカーネルに、アプリケーションのどこからでもアクセスできますか、それとも完全にこれを行うためのより良い方法がありますか?
よろしく、
フレッドシャトー