Windsor没有安装依赖项

时间:2016-11-27 03:39:33

标签: c# asp.net-mvc castle-windsor

在Asp.Net中使用依赖注入和IoC时,我非常新。我的应用程序分层到同一个项目的几个目录中,因为这是一个小项目。

我有一些服务要注入我的控制器。它们都从一个空接口继承:

Basic Interface

服务的安装程序如下:

Services Installer

和GlobalAsax文件:

Global.asax.cs

我已经调试并注意到我的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);
    }
}

谢谢,

1 个答案:

答案 0 :(得分:1)

Brannon所述,您必须向接受该服务的控制器添加构造函数。或者您可以将您的成员private readonly IPDFService _pdfService;更改为公共财产。温莎也会注入房产。

此外,您应该在服务注册中添加.WithServiceSelf(),如下所示:

Classes.FromThisAssembly().BasedOn<IService>().WithServiceSelf()

这仅注册您的服务类型,而不是所有已实现的接口或继承类型。