0

私はNInjectを使用しています。私はこのようなオブジェクトを持っています

interface IFoo {}

class Foo : IFoo {
   public Foo(string magic, IBar bar) {}
}

魔法だけを渡して foo を注入できるようにしたい。魔法はクラスごとに異なるため、これは異なるインスタンスを返す必要があります。

s_Kernel.Get<IFoo>("magic");
s_Kernel.Get<IFoo>("not-so-magic");

初めてそれをバインドしようとしたとき、私はやった

s_Kernel.Bind<IFoo>().To<Foo>();

しかし、それから私はそれを調べなければなりません。

s_Kernel.Get<IFoo>(new ConstructorArgument("magic", magic), s_Kernel.Get<IBar>());

私は明示的に自分自身を魔法のひもに結びつけたくありません。

ほぼそこにたどり着くような印象をBind<IFoo>().ToConstructor(ctorArg => new Foo(xxx, ctorArg.Kernel.Get<IFoo>());受けますが、引数を検索するために「xxx」に何を入力すればよいかわかりません。

4

1 に答える 1

1

あなたはNinject.Extensions.Factory (または流暢な表現チェーンWithConstructorArgumentの最後のピースを探していますBindが、それを意味するものではないと確信しています)。

于 2012-10-04T00:34:11.003 に答える