【发布时间】:2014-12-16 22:39:50
【问题描述】:
我正在尝试在我的 Job 类中依赖注入我的存储库(使用 Ninject):
public class Job
{
IRepository _repo;
public Job(IRepository repo)
{
_repo = repo;
}
public void Save()
{
repo.SaveJob(this);
}
}
我现在的问题是我需要从另一个类实例化 Job 类。 在依赖注入存储库时如何创建它? 我的意思是构造函数需要一个存储库。
【问题讨论】:
-
通常存储库中的对象不依赖存储库。如果您现在确实想创建一个作业,则需要使用 Ninject 创建一个。
-
@Jacob 我明白了。但重点不在于作业是否在存储库中。我需要“使用 Ninject 来创建一个”——你到底是什么意思?
-
你可以有一个依赖于 Job 的类并让 Ninject 为你创建它。否则,您将需要对 Ninject 容器的引用并从那里创建它。以 MVC 为例,您的控制器可能依赖于存储库,模型(作业)将不依赖于任何东西。控制器可以创建一个作业并使用存储库来保存它。
-
使用 Unity 会是
job = container.Resolve<Job>();,不知道如何使用 ninject... 另外取决于使用类的代码,DI 容器提供的一些创建器函数可能更有用. -
@AlexeiLevenkov 方法:System.Web.Mvc.DependencyResolver.Current.GetService(typeof (IRepository));获取存储库。非常感谢您的帮助。
标签: c# asp.net-web-api dependency-injection ninject