モジュールを介して、アプリケーションでNinject(v3)バインディングを手動でセットアップしました。
public class FooBarModule : NinjectModule
{
public override void Load()
{
Kernel.Bind<IFooBar>().To<FooBarOne>().InSingletonScope();
Kernel.Bind<IFooBar>().To<FooBarTwo>().InSingletonScope();
}
}
今、私のシステムのいくつかのクラスはインターフェースを実装していますIBoostrapable
:
public class FooBarOne : IFooBar, IBootstrapable
{ ... }
このインターフェースを実装するクラスのNinjectバインディングを自動的に拡張したいと思います。
だから、最終的に私はできるようにしたいと思います:
var fooBars = Kernel.GetAll<IFooBar>();
var bootstrapbables = Kernel.GetAll<IBootstrapable>();
fooBars.Count().Should().Be(2); // Instance of FooBarOne and FooBarTwo
bootstrapbables.Count().Should().Be(1); // instance of FooBarOne
重要なことは、私が実際に既存のバインディングを拡張することです(したがって、単一のスコープを保持します。
これはどういうわけか拡張ポイントで行うことができますか?
よろしく、
ドミニク