C# Windsor未安装依赖项

C# Windsor未安装依赖项,c#,asp.net-mvc,castle-windsor,C#,Asp.net Mvc,Castle Windsor,在Asp.Net中使用依赖项注入和IoC时,我是个新手。由于这是一个小项目,所以我的应用程序被分为同一项目的多个目录 我有一些服务,我想注入到我的控制器。它们都从空接口继承: 服务的安装程序如下所示: 和GlobalAsax文件: 我已经调试并注意到我的ServicesInstaller类确实被调用,但是,依赖项没有安装,因为在我的控制器中,我的一个服务的实例被保留为空 有没有人知道我应该如何正确设置它 我希望能够在控制器中使用依赖项,如下所示: public class TestCont

在Asp.Net中使用依赖项注入和IoC时,我是个新手。由于这是一个小项目,所以我的应用程序被分为同一项目的多个目录

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

服务的安装程序如下所示:

和GlobalAsax文件:

我已经调试并注意到我的ServicesInstaller类确实被调用,但是,依赖项没有安装,因为在我的控制器中,我的一个服务的实例被保留为空

有没有人知道我应该如何正确设置它

我希望能够在控制器中使用依赖项,如下所示:

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);
    }
}
Classes.FromThisAssembly().BasedOn<IService>().WithServiceSelf()
谢谢,

如中所述,您必须向接受服务的控制器添加构造函数。或者,您可以更改您的会员
private readonly IPDFService\u pdfsservice到公共属性。温莎也将注入属性

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

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);
    }
}
Classes.FromThisAssembly().BasedOn<IService>().WithServiceSelf()
Classes.fromthissembly().BasedOn().WithServiceSelf()

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

尝试在TestController中创建一个构造函数,该构造函数将依赖项IPDFService作为参数。容器将解析它。您的控制器上似乎缺少构造函数,该构造函数接受
IPDFService
,并将该参数分配给
\u pdfsservice
。不过我只是在猜测,因为我不认识温莎。您是否考虑过在最初的学习中尝试更轻的IoC引擎?DryIoc或Autofac会更容易。谢谢,伙计,我完全忘了把它添加到构造函数中。