免责声明:我对DI和IoC相当陌生,请原谅任何激烈的误解。提供Ninject与构造函数依赖它不能解决?
考虑一个ClassB
,它需要一个实现IClassA
的对象。 Ninject应该能够注入的ClassA
情况下进入ClassB
构造,假设它可以构建的ClassA
实例:
public class ClassA : IClassA
{
public ClassA(string runtimeDependency) { /* ... */ }
}
public class ClassB : IClassB
{
public ClassB(IClassA depA) { /* ... */ }
}
public sealed class TestBootstrapModule : NinjectModule
{
public override void Load()
{
Bind<IClassA>().To<ClassA>();
Bind<IClassB>().To<ClassB>();
}
}
现在,让我们说一些运行时的逻辑参与获得提供给ClassA
的string runtimeDependency
。我应该如何向Ninject提供runtimeDependency
,以便它可以提供ClassB
的实例ClassA
?
该字符串只会被确定一次,所以我不需要担心为每个实例注入新值。
我很高兴你提到变量的生命期和范围;如果变量在绑定时不存在,该怎么办? (我相信我应该尽早初始化我的所有绑定并在一个共同的位置。) – Rob 2011-12-29 02:49:36
@robjb:这似乎更像是一个设计问题,而不是一个ninject。没有更多的上下文,这很难说。你只需要确定一次字符串,所以它很可能需要你在设置之后做* all *你的绑定。请记住,我绝不是Ninject的专家。 – Marc 2012-01-02 14:05:38