private IGradeService _gradeService; public HomeController(IGradeService gradeService) { _gradeService = gradeService; } public ActionResult Index() { var model = _gradeService.GetAllGrade().ToList(); return View(model); }
修改Global.asax,在Application_Start()方法里面添加以下代码,注意引用Autofac、Autofac.Integration.Mvc以及别的引用函数
var builder = new ContainerBuilder(); builder.RegisterType<GradeService>().As<IGradeService>().InstancePerHttpRequest(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); //自动注入 var baseType=tyeOf(Idependency); var assemblys=AppDomain.currentDomain.getAssemblies().tolist(); builder.RegisterAssemblyTypes(assemblys.ToArry()) .where(t+baseTye.IsAssignableFrom(t)&&t!=baseType) .AsImplementedInterfaces().InstancePerLifetimeScope();
注意:DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 这个必须放在builder.RegisterControllers(Assembly.GetExecutingAssembly());的后面,否则会出现错误:没有为该对象定义无参数的构造函数。ui