我正在使用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本身就是“添加”动作的参数,它应该有一个无参数构造函数。
这是真的还是任何机构都有解决方案?
答案 0 :(得分:1)
MVC模型绑定负责将值注入操作方法。如果没有注册特制的自定义模型绑定器,Unity(或任何DI容器)就不会将服务注入操作方法。
Unity(和其他DI容器)只将服务注入到类型的构造函数中,这是进行依赖注入的建议方式。