2012-09-26 48 views
1

我不知道爲什麼Unity沒有注入或者忽略了我的構造函數中有參數的事實。我看到了這個post,但它更多地談到了NinJect,但是讓我相信也許Unity和Vs2012也有類似的問題。我知道Unity正在工作,因爲在我的Application_Start代碼中,在統一註冊之後,我從統一中解析了一個接口並取回所有需要的對象。我只是不知道爲什麼我的控制器的參數構造函數被忽略。我也統一註冊控制器。當我嘗試擊中該控制器時,出現No parameterless constructor defined for this object.錯誤。MVC4和「爲此對象定義的無參數構造函數」。錯誤使用Unity來注入依賴關係?

我很好奇,如果有人遇到了同樣的問題。

+1

你在說什麼「控制器」?那是'System.Web.Mvc.Controller'還是'System.Web.Http.ApiController'?你目前的註冊是什麼?你如何註冊你的'IDependencyResolver'? – Steven

+1

沒有任何代碼,似乎很難幫助你... – Cybermaxs

+0

@Steven,關於我是如何註冊IDependencyResolver的問題讓我覺得,因爲我必須在使用ApiController註冊我的解析器時使用IDependencyScope。我正在使用標準的控制器。所以,註冊它與SetResolver()工作。謝謝! – DDiVita

回答

2

我必須給道具Steven,因爲他引導我朝着正確的方向前進,但基本上,我使用的方法是使用ApiController註冊解析器,而不是使用SetResolver方法向標準控制器註冊。

+4

誰是你的爸爸? :p – Steven

0

我有同樣的問題。我安裝了Unity,然後安裝了Unity.Mvc4。我卸載了所有與Unity相關的內容,並且只重新安裝了Unity.Mvc4,並且所有內容都按照所宣傳的那樣工作。

0

對於Unity中的這個錯誤,轉到Global.asax並編寫下面的代碼。 初始化引導程序。

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     Bootstrapper.Initialise(); 





    } 
相關問題