添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
5 var builder = new ContainerBuilder(); 6 HttpConfiguration config = GlobalConfiguration.Configuration; 7 SetupResolveRules(builder); 8 // 注册所有的Controllers, // 通过PropertiesAutowired制定类型A在获取时会自动注入A的属性 // InstancePerLifetimeScope 保证对象生命周期基于请求 // InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例,这也是默认的创建实例的方式。 9 builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired().InstancePerDependency(); 10 // 注册所有的ApiControllers 11 builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired().InstancePerDependency(); 12 builder.RegisterType<MemberQueryFilterAttribute>().PropertiesAutowired(); // 注意,这里要把我们的全局Filter注册到Autofac中 13 builder.RegisterType<ParamsCheckFilterAttribute> ().PropertiesAutowired(); 14 builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); 15 var container = builder.Build(); 16 // 注册api容器需要使用HttpConfiguration对象 17 config.DependencyResolver = new AutofacWebApiDependencyResolver(container); 18 // 注册MVC容器 19 DependencyResolver.SetResolver( new AutofacDependencyResolver(container)); 20 } 22 private static void SetupResolveRules(ContainerBuilder builder) 23 { 24 // WebAPI只用引用BLL和DAL的接口,不用引用实现的dll。 25 // 如需加载实现的程序集,将dll拷贝到bin目录下即可,不用引用dll 26 var iBLL = Assembly.Load( " cpm.IBLL " ); 27 var BLL = Assembly.Load( " cpm.BLL " ); 28 var iDAL = Assembly.Load( " cpm.IDAL " ); 29 var DAL = Assembly.Load( " cpm.DAL " ); 31 // 根据名称约定(服务层的接口和实现均以BLL结尾),实现服务接口和服务实现的依赖 32 builder.RegisterAssemblyTypes(iBLL, BLL) 33 .Where(t => t.Name.EndsWith( " BLL " )) 34 .AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency(); 36 // 根据名称约定(数据访问层的接口和实现均以DAL结尾),实现数据访问接口和数据访问实现的依赖 37 builder.RegisterAssemblyTypes(iDAL, DAL) 38 .Where(t => t.Name.EndsWith( " DAL " )) 39 .AsImplementedInterfaces().PropertiesAutowired().InstancePerDependency(); 40 // 注册其他模块 41 builder.RegisterModule<DbModule> (); 42 builder.RegisterModule<WebModule> (); 43 }
  /// <summary>
    /// web通用类注册
    /// </summary>
    public class WebModule:Module
        protected override void Load(ContainerBuilder builder)
            //这里的示例 具体情况自己创建
            builder.Register<IUserService>(c => RequestWrapper<IUserService>.CreateInstance()).InstancePerDependency();

在webapi项目global文件重要启动注入

分享、奉献、勤奋、好学