2014-03-06 130 views
5

我使用Unity和Unity.MVC5。該註冊類型和依賴解析器的類是如下:Unity不解決依賴關係

public static class UnityConfig 
{ 
    public static void RegisterComponents() 
    { 
     var container = new UnityContainer(); 

     container 
      .RegisterType<ILogger, Nlogger>() 
      .RegisterType<IDataAccessLayer, SqlDataAccessLayer>() 
      .RegisterType<IEventBusiness, EventBusiness>(); 

     DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 

    } 
} 

這裏是我的Global.asax代碼:

void Application_Start(object sender, EventArgs e) 
{ 
    UnityConfig.RegisterComponents(); 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
} 

在我的控制器之一,我有一個屬性是這樣的:

[Dependency] 
public IEventBusiness EventBusiness { get; set; } 

我期望這個屬性可以由Unity自動設置,但它總是爲空。有人能幫我弄清楚我做錯了什麼嗎?

+0

您也可以嘗試在註冊時提供'InjectionProperty'配置。或者,爲什麼不嘗試構造函數注入呢? – StuartLC

+0

您是否將控制器註冊到容器中? – TylerOhlsen

+0

@TylerOhlsen,不,我不註冊控制器。我一定要嗎?當我檢查DependencyResolver.Current時,在控制器內部,它向我提供了具有所有註冊類型的UnityContainer的正確實例。 – Aref

回答