我已經設法解決這個問題的代碼順序。現在我檢查一下自己,依賴關係是否可以解決。如果沒有,我會尋找一個無參數的構造函數(通過Reflection)並調用它。但我認爲這是Ninjects的工作份額......所以更多的解決方法不是真正的解決方案。
原始的問題
public class Test
{
public Test(INavigationService asd)
{
// rnd stuff
}
public Test()
{
// other rnd stuff
}
}
我有了這個測試類。現在,我需要Ninject創建的兩個實例。所以,我做到以下幾點:
Test test = Kernel.Get<Test>();
碰上一個例外: 「Ninject.ActivationException:錯誤激活INavigationService」。
如果我重新排序,這樣
public class Test
{
public Test()
{
// other rnd stuff
}
public Test(INavigationService asd)
{
// rnd stuff
}
}
它的工作原理構造。 但我無法確定,我使用Ninject的每個類的構造函數都是「正確」的順序。 那麼,有沒有辦法告訴Ninject不要忽略無參數的構造函數,如果它不是第一個?
預先感謝您。
我意識到這一點。但我希望Ninject注入到兩者中。 如果它知道INavigationService,它應該使用它。如果不是,它應該使用另一個,而不是拋出異常。 –
我明白了。雖然你的問題聽起來不同。要做到這一點,你可能需要稍微等一下,看看這裏:http://www.planetgeek.ch/2011/05/28/ninject-constructor-selection-preview/。另外建議玩WithConstructorArgument()''。 – Mrchief
謝謝你,我會再看看這個! –