我正在嘗試使用ninject
注入物業。鑑於下面ninject
模塊中的兩個綁定,我預計ConcreteDependency
將被注入B
。
但是,WhenInjectedInto
似乎並不考慮被注入的類型,只是目標的聲明類型(在這種情況下屬性)。基礎類Ninject物業注入
有沒有辦法達到我預期的行爲?
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 { }
如何在NInject中註冊A,B和C? –
您不必在Ninject中。由於'B'和'C'是具體類,因此不需要明確註冊。 – Gibsnag