1

我将 Unity 应用程序块与 UnityMvc 一起使用。我有一个名为 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();
    }

当统一尝试为“添加”操作构建 UnitOfWork 对象时,它会产生以下错误:

没有为此对象定义无参数构造函数。

似乎 UnitOfWork 本身就是“添加”操作的参数,它应该有一个无参数的构造函数。

这是真的还是任何机构有解决方案?

4

1 回答 1

1

MVC 模型绑定负责将值注入到操作方法中。如果没有注册特制的自定义模型绑定器,Unity(或任何 DI 容器)将不会将服务注入到操作方法中。

Unity(和其他 DI 容器)仅将服务注入类型的构造函数,这是进行依赖注入的建议方法。

于 2013-08-07T06:56:22.893 回答