1

UnityMvc と一緒に Unity Application Block を使用しています。アクションを持つ HomeController という名前のコントローラーがあります。

    public ActionResult Add(UnitOfWork UnitOfWork)
    {
        Person p = new Person();
        p.Code = "1202";
        p.City = new City() { Code = "21", Name = "Paris" };
        UnitOfWork.Save();

        ViewBag.Message = "Done.";

        return View();
    }

UnitOfWork パラメーターには、次のようなコンストラクターがあります。

    public UnitOfWork(Context Context)
    {
        this.context = Context;
    }

および「保存」メソッド:

    public void Save()
    {
        this.context.SaveChanges();
    }

Unity が「追加」アクションの UnitOfWork オブジェクトを作成しようとすると、次のエラーが発生します。

このオブジェクトにはパラメーターなしのコンストラクターが定義されていません。

UnitOfWork は「追加」アクションのパラメーター自体であるように見えますが、パラメーターのないコンストラクターが必要です。

それは本当ですか、それとも解決策を持っている体はありますか?

4

1 に答える 1

1

MVC モデル バインディングは、アクション メソッドへの値の挿入を処理します。特別に細工されたカスタム モデル バインダーを登録しないと、Unity (または、DI コンテナー) はアクション メソッドにサービスを挿入しません。

Unity (およびその他の DI コンテナー) は、サービスを型のコンストラクターにのみ注入します。これは、依存性注入を行うための推奨される方法です。

于 2013-08-07T06:56:22.893 に答える