私は2つの実装Foo1とFoo2を持つIFooインターフェイスを持っています。NInject:複数のサービスを単一のインターフェイスにバインドする
public interface IFoo
{
void Process();
}
public class Foo1 : IFoo
{
public void Process()
{
}
}
public class Foo2 : IFoo
{
public void Process()
{
}
}
私は以下のように登録しています。
kernel.Bind(x => x
.FromAssemblyContaining<IFoo>()
.SelectAllClasses().InheritedFrom<IFoo>()
.BindAllInterfaces()
.Configure(b => b.InRequestScope()));
が、私はこの
public class TestController: ApiController
{
public TestController(IFoo[] fooServices)
{
}
}
しかし、サービスリストfooServicesのように、すべてのIFooサービスを取得しようとしているが空です。代わりに私の2つのサービスをすべて手に入れたい。
助けてください!
は手動で同じインターフェースの代わりに、あなたのLINQの式に複数のタイプをバインドしようとしています。これは、各プラグインの種類を横断し、そのインターフェイスを取得し、次のように登録することで解決された ?バインディングエラーか解決エラーかどうかを確認するだけです。 – ckuri
@spender、ありがとうございます。私はこれを試してみる。 –
@ckury、あなたはヒントを持っています!どちらかを試してみる価値がある –