免責聲明:我對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