2010-09-15 39 views
2

我有一個使用Repository和UnitofWork模式實現的WCF服務。 現在我得到以下錯誤:使用Repository和UnitofWork模式實現的WCF服務中的構造函數錯誤

提供無法加載爲服務,因爲它沒有一個默認的(參數)構造函數的服務類型。要解決該問題,請向該類型添加默認構造函數,或將該類型的實例傳遞給主機。

當我使用WIHTOUT這些模式時,它沒有發現任何錯誤。 幫助?建議?如何獲得通過這個錯誤?

以下是代碼片段:

public class Service : IService 
{ 

    private IUnitOfWork _unitOfWork; 

    private IMyRepository _myRepository; 

    // Dependency Injection enabled constructors 

    public Service(IUnitOfWork uow, IMyRepository myRepository) 
    { 
     _unitOfWork = uow; 
     _myRepository = myRepository; 
    } 

} 
+0

您使用哪種依賴注入容器? – willbt 2010-09-16 02:48:30

回答

1

如果使用默認的服務實例化,你必須提供參數的構造函數。您的設計通過構造函數提供依賴注入。在這種情況下,您必須擁有自己的實例提供程序來調用構造函數並創建服務實例。您可以創建每個服務instance provider,behavior和可選的service host,但它是非常糟糕的方式。更好的方法是使用Inversion of Control容器,它將解析配置中的依賴關係。在這種情況下,您將只有一個新的實例提供程序,行爲和可選的服務主機。

Here你有非常好的帖子,關於創建新的instnace提供者來解決通過Unity的服務。

+0

這可以使用ninject來實現嗎?我有同樣的問題,但我使用ninject wcf擴展名。 – littlechris 2010-11-02 13:38:58

+0

對不起,我對Ninject沒有任何經驗,所以我忍不住。 – 2010-11-02 19:29:50