2016-11-27 193 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

謝謝你,我完全忘了將它添加到構造函數中。 –