6

Unityで行われているように、オンデマンドで他のモジュール(アセンブリ)からサービスをロードできるようにする機能がNInjectにありますか?

4

3 に答える 3

13

これがあなたが探しているものだと確信しています:

var kernel = new StandardKernel();
kernel.Load( Assembly.Load("yourpath_to_assembly.dll");

Ninject.dll のリフレクターを使用して KernelBase を見ると、この呼び出しによって、読み込まれたアセンブリ内のすべてのモジュールが再帰的に読み込まれることがわかります (Load メソッドは IEnumerable を受け取ります)。

public void Load(IEnumerable<Assembly> assemblies)
{
    foreach (Assembly assembly in assemblies)
    {
        this.Load(assembly.GetNinjectModules());
    }
}
于 2009-11-14T05:25:08.860 に答える
3

「LikeUnity」の意味はよくわかりませんが、アセンブリをロードするためにいくつかの異なることができます。Ninject自体は、デフォルトで拡張機能/プラグインのローカルアセンブリをロードします。Ninjectは、アセンブリからNinjectModuleクラスをロードすることもできます。より複雑なことをしたい場合は、Ninject.Extensions.Conventionsプロジェクトを使用して、さまざまなスキャンとタイプバインディングを実行できます。

于 2009-11-25T22:10:55.613 に答える
0

箱から出してアセンブリを非静的にロードすることについて言及している場合は、そうではありません。

これには他にも多くの質問があります。たとえば、プラグインのようなアーキテクチャで Ninject を使用する

于 2009-11-09T08:54:20.807 に答える