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

时间:2013-08-05 14:15:23

标签: dependency-injection unity-container

我正在使用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();
    }

当unity尝试为“Add”操作构造UnitOfWork对象时,会产生以下错误:

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

看起来UnitOfWork本身就是“添加”动作的参数,它应该有一个无参数构造函数。

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

1 个答案:

答案 0 :(得分:1)

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

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