0

我正在学习如何使用 Unity 3 实现 Di。在官方文档中,有一段文字说:

“用于 ASP.NET MVC NuGet 包的 Unity booststrapper 通过将库和源代码添加到 Visual Studio 中的项目来简化此操作。以下代码示例显示了 NuGet 包添加到项目的 UnityConfig 类中的 RegisterTypes 方法......”

我从 NuGet 获得了 Unity 3,但是这个类没有下载到我的项目中。我正在使用 MVC 4 Web 项目。

我还需要做什么才能上这门课吗?

最后,如何创建一个配置文件,如 web.config,指向我可以将所有注册信息放入容器的位置?

问候,马塞洛。

4

1 回答 1

0

UnityConfig是您定义的类。由于您在 MVC4 项目中执行此操作,因此最简单的方法可能是同时加载Unity.MVC3包。

Unity.MVC3将为您创建一个Bootstrapper.cs文件。我所做的是将 Bootstrapper 重命名为 UnityConfig 并将文件移动到 App_Start 文件夹中。

你最终会得到的是

UnityConfig.cs

public static class UnityConfig
{
    public static void Initialise()
    {
        var container = BuildUnityContainer();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));
    }

    private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        // e.g. container.RegisterType<ITestService, TestService>();

        container.RegisterType<IFooService, KungFooService>();
        ...

        return container;
    }
}

全球.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        UnityConfig.Initialise();
        ...
    }
}

注意:还有一个 Unity.MVC4 包,其工作方式完全相同。

编辑: 根据评论清除事情......

以下是相关包:

  1. 团结 3
  2. Unity.Mvc(微软)
  3. Unity.Mvc3
  4. Unity.Mvc4

我的答案基于 Unity.Mvc3,它在功能上等同于 Unity.Mvc。我发现 Unity.Mvc3 的文档和查找示例更容易,特别是对于初学者来说,虽然差别不是很大。但是,我不使用 XML 配置,在您的情况下,您可能会发现 Unity.Mvc 更容易。还有“由微软创造”的因素,这对某些人来说是一个很大的优势。

Unity.Mvc 确实为您创建了 UnityConfig,因此您无需像我上面所说的那样重命名。它还包括一个帮助加载 XML 配置的扩展。

于 2013-09-05T03:00:29.770 回答