在Asp.Net中使用依赖注入和IoC时,我非常新。我的应用程序分层到同一个项目的几个目录中,因为这是一个小项目。
我有一些服务要注入我的控制器。它们都从一个空接口继承:
服务的安装程序如下:
和GlobalAsax文件:
我已经调试并注意到我的ServicesInstaller类被调用了,但是,我的控制器中没有安装依赖项,我的一个服务的实例被保留为null。
有没有人知道我应该如何正确设置?
我希望能够在我的控制器中使用我的依赖项,如下所示:
public class TestController : Controller
{
private readonly IPDFService _pdfService;
[HttpGet]
public ActionResult Index()
{
//PDFService service = new PDFService();
string pdfFile = _pdfService.GenerateAgendaPdfFromURL("http://google.com", 1);
return View((object)pdfFile);
}
}
谢谢,
答案 0 :(得分:1)
如Brannon所述,您必须向接受该服务的控制器添加构造函数。或者您可以将您的成员private readonly IPDFService _pdfService;
更改为公共财产。温莎也会注入房产。
此外,您应该在服务注册中添加.WithServiceSelf()
,如下所示:
Classes.FromThisAssembly().BasedOn<IService>().WithServiceSelf()
这仅注册您的服务类型,而不是所有已实现的接口或继承类型。