我正在尝试使用ninject
. 鉴于ninject
下面模块中的两个绑定,我希望ConcreteDependency
将B
.
但是,似乎WhenInjectedInto
不考虑注入的类型,只考虑目标的声明类型(在这种情况下为属性)。
有没有办法实现我预期的行为?
static void Main(string[] args)
{
var kernel = new StandardKernel(new TestModule());
var b = kernel.Get<B>();
var c = kernel.Get<C>();
}
class TestModule : NinjectModule
{
public override void Load()
{
Bind<IDependency>().To<EmptyDependency>();
Bind<IDependency>().To<ConcreteDependency>().WhenInjectedInto<B>();
}
}
abstract class A
{
[Inject]
public IDependency Dependency { get; set; }
}
class B : A {}
class C : A {}
interface IDependency {}
class EmptyDependency : IDependency { }
class ConcreteDependency : IDependency { }