我见过的几乎所有 Ninject 示例都解释了如何将它与 ASP.NET MVC 一起使用,它会自动将依赖项注入控制器。我将如何手动使用 Ninject?假设我有一个自定义 ActionResult:
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
关键字。