2016-11-27 166 views
1

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

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

Basic Interface

安装程序的服务如下:

Services Installer

而且GlobalAsax文件:

Global.asax.cs

我已调试并注意到我的ServicesInstaller类没有ge t调用,但是,依赖没有安装在我的控制器中,我的服务之一的实例留空。

有没有人有我如何正确设置这个想法?

我希望能够用我的依赖在我的控制器是这样的:

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

尝试在TestController中创建一个构造函数,该构造函数将依赖项IPDFService作为参数。容器将解决它。 – CodingYoshi

+1

看来你错过了你的控制器上的构造函数,该构造函数接受一个'IPDFService'并将该参数赋给'_pdfService'。我只是猜测,因为我不知道温莎。你有没有考虑尝试一个轻量级的IoC引擎来进行初步学习? DryIoc或Autofac会更容易。 – Brannon

回答

1

由于从Brannon说,你要一个构造函数添加到您控制器接受服务。或者您可以将您的会员private readonly IPDFService _pdfService;更改为公共财产。温莎也将注入物业。

此外,你应该添加.WithServiceSelf()到您的服务注册这样的:

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

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

+0

谢谢你,我完全忘了将它添加到构造函数中。 –