幾乎所有我見過的Ninject示例都解釋瞭如何在ASP.NET MVC中使用它,它會自動將依賴注入到控制器中。我如何手動使用Ninject?比方說,我有一個自定義的ActionResult:如何在使控制器與IoC框架無關時使用Ninject和ActionResults?
public class JsonResult : ActionResult
{
[Inject] public ISerializer Serializer { get; set; }
public JsonResult(object objectToSerialize)
{
// do something here
}
// more code that uses Serializer
}
在我的控制器
然後,我在方法中使用JsonResult
這樣的:
public ActionResult Get(int id)
{
var someObject = repo.GetObject(id);
return new JsonResult(someObject);
}
正如你所看到的,我實例化對象自己,這避開了Ninject的注射,並且Serializer
將爲空。然而,這樣做的以下方式似乎不太對我說:
public ActionResult Get(int id)
{
var someObject = repo.GetObject(id);
return IoC.Kernel.Get<JsonResult>(someObject);
}
因爲現在不僅是一個在控制器上Ninject的依賴,但我也有揭露Ninject內核在一個靜態類/單例,並確保依賴注入的對象只能通過內核創建。
有沒有辦法以某種方式配置Ninject注入依賴而不依賴於公開內核?如果可能,我希望能夠使用new
關鍵字。
+1 - 這正是我所要做的。 – 2010-11-03 15:50:35