2016-07-07 25 views
0

我正在使用Unity依賴注入並且遇到麻煩。我已經註冊了我的接口和類如下:Unity - 當前類型是一個接口,不能構造。你是否缺少類型映射?

container.RegisterType<IUserService, UserService>(); 

其中容器是IUnityContainer。

在我的控制器我有一個構造函數設置採取的IUserService參數,像這樣:

private readonly IUserService _service; 

    public DependencyController(IUserService service) 
    { 
     _service = service; 
    } 

當被引導至該控制器的索引頁面上的鏈接被擊中,我得到以下錯誤:

「目前的類型,Converge.Service.Interfaces.IUserService,是一個接口,不能構成是否缺少類型映射。?」。不知道我可能會錯過什麼。任何幫助是極大的讚賞?如果您需要更多信息,請告訴我。

UPDATE 這裏是UnityConfig類

public class UnityConfig 
{ 
    private static readonly Lazy<IUnityContainer> Container = new Lazy<IUnityContainer>(() => 
    { 
     var container = new UnityContainer(); 

     RegisterTypes(container); 

     return container; 
    }); 

    public static IUnityContainer GetConfiguredContainer() 
    { 
     return Container.Value; 
    } 

    private static void RegisterTypes(IUnityContainer container) 
    { 
     new ServiceInjection() 
      .Inject(container); 
    } 
} 

public class ServiceInjection 
    { 
     public void Inject(IUnityContainer container) 
     { 
      container.RegisterType<IUserService, UserService>(); 
     } 
    } 
+0

請從您的組成根(即捆綁的容器MVC啓動代碼)顯示代碼。 – NightOwl888

+0

你確定,調用'Inject'方法嗎?看起來像你的容器註冊代碼沒有執行 – Backs

+0

是啊被稱爲。步入它。 –

回答

0

確定,所以過了一小的搜索和創建其他項目,我想通了,發生了什麼事。只是一個愚蠢的錯誤。我的ServiceInjection類是在一個單獨的dll中。當我通過軟件包管理器添加Unity DI時,它在主項目和注入DLL中添加了一個App_Start文件夾。我忘了從ServiceInjection DLL中刪除App_Start文件夾和內容。一旦該文件夾被刪除,所有的工作,因爲它應該。

0

我知道這是舊的,但如果別人遇到這樣 - 我得到了同樣的錯誤,當我加入了服務和管理(以及它們的接口),但在我的依賴沒有登記這些接口注射配置。如果你得到這個錯誤,一定要檢查你的新接口是否真的被注入!

相關問題