我是Ninject的新手,試圖弄清楚實現。我正在搜索和閱讀,任何人都可以向我指出一些特定於Ninject和MVC的良好示例和文檔。Ninject 101 for MVC
我可以得到的基本工作,我掙扎着有依賴關係的綁定。例如,我有以下類:
public class ScheduleService : IScheduleService
{
private IValidationDictionary validationDictionary;
public ScheduleService(IValidationDictionary validationDictionary)
{
this.validationDictionary = validationDictionary;
}
}
這取決於:
public class ModelStateWrapper : IValidationDictionary
{
private ModelStateDictionary _modelState;
public ModelStateWrapper(ModelStateDictionary modelState)
{
_modelState = modelState;
}
,我想創建綁定:
Bind<IValidationDictionary>()
.To<ModelStateWrapper>();
Bind<IScheduleService>()
.To<ScheduleService>();
如何建立映射,所以我控制器可以使用ScheduleService?它如何獲得ModelState?
澄清: 我想將其注入處理業務邏輯的調度服務類。我有Ninject工作,只是不知道如何處理依賴關係。以下是我的控制器代碼。
public class ScheduleController : ActivityController
{
private IScheduleService scheduleService;
public ScheduleController(IScheduleService scheduleService)
{
this.scheduleService = new ScheduleService(new ModelStateWrapper(this.ModelState));
}
感謝您的耐心,我可能不會問正確的問題。它建立,但是當我運行它時,我得到:
錯誤激活IValidationDictionary 沒有匹配的綁定可用,並且類型不可自行綁定。 激活路徑:依賴IValidationDictionary的 3)注射到參數validationDictionary類型ScheduleService的構造的 2)依賴性IScheduleService注射入型ScheduleController的構造 1)請求的參數scheduleService爲ScheduleController
建議: 1)確保您已經爲IValidationDictionary定義了一個綁定。 2)如果綁定是在模塊中定義的,請確保該模塊已加載到內核中。 3)確保你不小心創建多個內核。 4)如果您正在使用自動模塊加載,請確保搜索路徑和過濾器是正確的。
我可能會重新考慮這一方案。 ModelState是特定動作的上下文,因此不能在全局級別注入。 – 2010-11-11 13:27:37
這也可能是相關的:http://stackoverflow.com/questions/4127184/ninject-error-he-icontrollerfactory-ninject-web-mvc-ninjectcontrollerfactory-d/4127715#4127715 – 2010-11-11 13:46:55