2012-07-19 155 views
0

請讓我先說這個,說我對Unity不是很熟悉。我知道這是一個依賴注入容器,我理解的程度有限。我繼承了一個使用Unity的應用程序,儘管它似乎並沒有被正確實現。在之前的開發者使用下面的代碼來實例化的統一性對象,然後堅持它在整個會議的global.asasession_start在會話中存儲UnityManager

var unity = new UnityManager(new UnityContainer()); 
Session["UnityManager"] = unity; 

據我所知不會這本身引起的併發問題?任何人都可以提供一個如何正確實現統一的例子,或者如果這是正確的,向我解釋爲什麼這是這樣嗎?

+0

http://weblogs.asp.net/shijuvarghese/archive/2011/01/21/dependency-injection-in-asp-net- MVC -3-使用-dependencyresolver和 - controlleractivator.aspx – jrummell 2012-07-19 12:59:02

回答

0

如果您使用mvc,您可以刪除會話並從nuget包管理器安裝unity.mvc3。它與mvc4兼容並以正確的方式爲您設置。你可以把現有的映射放在bootstrapper.cs中(自動安裝)

基本上你想在global.asax中有1個靜態變量來訪問unity。因此,你可以取代所有這些

var unitycontainer = Session["UnityManager"]; 
unitycontainer.resolve<>... 

MVCApplication.Container.Resolve<> ..