この質問は特にNinjectに関連していません。それは一般的なコーディングに関する質問ですが、私がやっていることよりも、Ninjectの問題を完全に処理するより良い方法があるかもしれないので、ここに投稿しています。Ninjectカーネルにグローバルにアクセスする
Ninject標準カーネルにGlobal.asaxのインスタンスからグローバルにアクセスできるかどうかを知りたいと思います。私はいくつかのクラスを持っている場合は
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;
}
}
}
、例えば、私が依存チェーンを開始したいと思いコントローラとインタフェースしていないFacadeクラスは、私の理解は、私がすべきである:ここでは
コードです使用は:_className = kernel.Get<IClassName>();
ただし、これを行うには、私が知っている唯一の方法は、Ninject標準カーネルの新しいインスタンスを作成することですが、私が正しく理解していれば、の新しいインスタンスを作成するのは良いアイデアではありませんNinjectカーネルです。これは、基本的に、ネル。
アプリケーション起動時に、アプリケーションのどこからでも、Global.asaxでインスタンス化された既存のカーネルにアクセスすることは可能ですか、これを行うにはより良い方法がありますか?
よろしく、
フレッド・シャトー
あなたは工場出荷時のために設定すると、MVC拡張機能の実装にどのような影響を与えるかを知ることが起こるでしょうか? –
悲しいことに、私はそれを試さずに分からなかった部分です。私は、ユニークな懸念やアーキテクチャの選択のために、私が取り組んでいるアプリケーションのために上記のラッピング方法を使用しました。 – Kaiser12