0

Unity 3 で Di を実装する方法を学んでいます。公式ドキュメントには、次のようなテキストがあります。

「ASP.NET MVC NuGet パッケージの Unity ブーストストラップは、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;
    }
}

Global.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.Mvc と機能的に同等の Unity.Mvc3 に基づいています。違いはそれほど大きくありませんが、特に初心者にとっては、Unity.Mvc3 を使用するとドキュメントと例を簡単に見つけることができます。ただし、XML 構成は使用しません。あなたの場合、Unity.Mvc の方が簡単です。一部の人々にとって大きなプラスとなる「Microsoftによって作成された」要素もあります.

Unity.Mvc は UnityConfig を作成するので、上記のように名前を変更する必要はありません。また、XML 構成の読み込みに役立つ拡張機能も含まれています。

于 2013-09-05T03:00:29.770 に答える