Почти все примеры 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 в статическом состоянии.class / singleton и убедитесь, что объекты, основанные на внедрении, создаются только через ядро.
Есть ли способ каким-то образом настроить Ninject для внедрения зависимости, не полагаясь на раскрытие ядра?Я хотел бы иметь возможность использовать ключевое слово new
, если это возможно.