2

外部アセンブリから型をロードしていて、その型のインスタンスを作成したいと思います。ただし、このタイプ/クラスは、現在管理/バインドされているオブジェクトによるコンストラクタインジェクション用に設定されていNinjectます。Ninjectこのタイプのインスタンスを作成し、コンストラクターの依存関係を挿入するにはどうすればよいですか?

以下は私がこのタイプを取得する方法です。

Assembly myAssembly = Assembly.LoadFrom("MyAssembly.dll");
Type type = myAssembly.GetType("IMyType");
4

1 に答える 1

2

を作成したとすると、次のKernel方法で作成して解決できるはずです。

kernel.Get(type)

....それから私は質問を読みました....MyAssembly.dllがIMyTypeの実装を持っていると仮定すると、あなたは(あなたのメインアセンブリで)必要です:-

kernel.Load( "MyAssembly.dll")

そして、動的にロードされたアセンブリでは:-

public class Module : StandardModule
{
    public override void Load()
    { 
        Bind<IMyType>().To<MyType>();
    }
}

そして、MEFがここでの答えであるかどうかを確認することを忘れないでください。あなたがそれを助けることができれば、明示的なプラグイン管理および/または検出ロジックの連なりを書きたくないからです(しかし、あなたが単純なことをしているだけでAssembly.LoadFrom()、質問をする目的で、あなたはおそらくまだNinjectのスイートスポットにいます。

同上、実際にを介してインターフェースを解決する必要がある場合はAssembly.GetType()、おそらく実行しなければならない遅延バインディングを実行するようなものを使用する必要がありdynamicます(そして、それを知る前に、動的言語を使用するか、スクリプティング言語をホストする必要があります)

于 2010-09-09T20:18:16.303 に答える