WebAPI_AutoFac(依赖注入)的简单使用

在这里插入图片描述
控制器:构造函数注入不同类型的实例赋值给其实现的接口类型
在这里插入图片描述

  public class UserController : ApiController
    {
        private IPersons person;//接收注入的类型实例

        public UserController(UCer ucer)//构造函数注入
        {
            this.person = ucer;
        }
        // GET: api/User
        public string Get()
        {
            return person.Say();
        }
  	}

Global文件(配置):

 public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
         
            
            //--导入AutoFac-AutoFac.WebAPI2
            //创建容器
            var builder = new ContainerBuilder();
            // Get your HttpConfiguration.
            var config = GlobalConfiguration.Configuration;
            //加载程序集类型,自动注册其下面的所有类型(中英文)
            builder.RegisterAssemblyTypes(Assembly.Load("Chinaese"));
            //加载本程序集下的所有控制器类型
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            //编译一下
            var container = builder.Build();
            //WebApi整个的解析依赖交给AutoFac    //默认构造函数注入
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
            //把所有类型都注册到AutoFac容器里,最后把整个项目的实例创建和解析依赖交给AutuFac,
            //这样AutoFac在创建控制器实例的时候根据参数类型(不注入的走无参构造函数),去容器取对应实例进行注入





            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);


        }
    }

在这里插入图片描述
在这里插入图片描述
B站资源
B站视频简单教程>>>

如果程序中出现请确保控制器具有无参构造函数!!那就是容器内没有其构造函数参数指定的类型资源(需要注入的资源类型没有被注册到容器内)。


2020-04-05 16:35

发布了83 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/MrLsss/article/details/105328731