0

请让我先说我对 Unity 不是很熟悉。我知道它是一个依赖注入容器,我在有限程度上理解这意味着什么。我继承了一个始终使用 Unity 的应用程序,尽管在我看来它没有被正确实现。在session_start之前的global.asa开发人员中,使用以下代码实例化统一对象,然后将其持久化到整个会话中:

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

据我了解,这不会固有地导致并发问题吗?谁能提供一个如何正确实现统一的示例,或者如果这是正确的,请向我解释为什么会这样?

4

1 回答 1

0

如果您使用的是 mvc,您可以从 nuget 包管理器中删除会话并安装 unity.mvc3。它与 mvc4 兼容,并以正确的方式为您设置。您可以将现有映射放入 bootstrapper.cs(自动安装)

基本上你想在 global.asax 中有 1 个静态变量来访问统一。所以你可以替换所有这些

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

MVCApplication.Container.Resolve<> ..
于 2013-04-06T14:00:17.193 回答