でNinject依存性注入コンテナと、私は次のような方法で自己結合を実行することができます。自己結合城ウィンザーとC#の
MyClass mc = ninjectKernel.Get<MyClass>();
は城ウィンザーでの動作と同等の並べ替えはありますか?
をインストーラでは:ヨアヒムIsakssonのコメントに従い
でNinject依存性注入コンテナと、私は次のような方法で自己結合を実行することができます。自己結合城ウィンザーとC#の
MyClass mc = ninjectKernel.Get<MyClass>();
は城ウィンザーでの動作と同等の並べ替えはありますか?
をインストーラでは:ヨアヒムIsakssonのコメントに従い
城ウィンザーの対応する呼び出しが(あります私がNInjectの複雑な機能を欠いていない限り)
MyClass mc = container.Resolve<MyClass>();
コメントで指摘したように、ウィンザーで働くには、自分自身に対してクラスを登録する必要があります。
各クラスをそれ自体に対して登録する必要を避けるために、基底クラスに基づいて、複数のクラスをあるアセンブリに登録することができます。たとえば、次のコードを使用して、すべてのMVC Controller派生クラスを自己登録します。 'container.Register(Classes.FromThisAssembly()。BasedOn
が、これは私がやっていたものである
container.Register(Component.For<MyClass>().ImplementedBy<MyClass>());
解決するには:
MyClass mc = container.Resolve<MyClass>();
'.ImplementedBy
私はWindsorの「MyClass mc = container.Resolve();」と言っていますが、これは同じことをしているようです。 –
Doh、明らかです。ありがとう。あなたがそれを掲示したいなら、それは疑い深く私の答えのように見えます。それを動作させるには、それを自分自身に登録しなければなりませんでした。 'container.Register(Component.For().ImplementedBy ());' –
@JamesWiseman正しくリコールすれば、ちょっとした入力を省くことができます: 'container.Register(Component.For());' when "for"型の引数はクラスであり、 "によって実装された"呼び出しはありません、ウィンザーは実装者としてクラスを登録するほどスマートです。 –
phoog