zoukankan      html  css  js  c++  java
  • c# autofac结合WebApi的使用

    一、下载相关类库引用

      install-package Autofac

      install-package Autofac.Mvc4

      install-package Autofac.WebApi2

    二、配置autofac

     public class AutofacUtil
        {
            /// <summary>
            /// Autofac容器对象
            /// </summary>
            private static IContainer _container;
    
            /// <summary>
            /// 初始化autofac
            /// </summary>
            public static void InitAutofac()
            {
                var builder = new ContainerBuilder();
    
                builder.RegisterControllers(Assembly.GetCallingAssembly());
                builder.RegisterApiControllers(Assembly.GetCallingAssembly());
    
                //配置接口依赖
                builder.RegisterInstance<IDbConnection>(DBFactory.CreateConnection()).As<IDbConnection>();
                builder.RegisterGeneric(typeof(GenericRepository<>)).As(typeof(IGenericRepository<>));
                //注入仓储类
                builder.RegisterAssemblyTypes(Assembly.Load("Demo.Repository"))
                       .Where(x => x.Name.EndsWith("Repository"))
                       .AsImplementedInterfaces();
    
                _container = builder.Build();
    
                //设置MVC依赖注入
                DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
    
                //设置WebApi依赖注入
                GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)_container);
            }
    
            /// <summary>
            /// 从Autofac容器获取对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <returns></returns>
            public static T GetFromFac<T>()
            {
                return _container.Resolve<T>();
            }
        }

    三、注册autofac

      在Global.asax全局文件中Application_Start方法添加代码

    AutofacUtil.InitAutofac();

    四、使用案例

     public class CodeController : BaseApiController
        {
            private readonly ISMCodeRepository _smCodeRepository;
            public CodeController(ISMCodeRepository smCodeRepository)
            {
                _smCodeRepository = smCodeRepository;
            }
    
            /// <summary>
            /// 获取数据字典数据列表
            /// </summary>
            /// <param name="codeTypeNo">数据字典字典类型代码</param>
            /// <returns></returns>
            [HttpPost]
            public ApiResult GetCodeList(SMCodeType codeTypeEntity)
            {
                var result = _smCodeRepository.GetCodeList(codeTypeEntity.CodeTypeNo);
                return new ApiResult() { Data = result.Select(x => new { x.CodeNo, x.CodeName }) };
            }
        }
  • 相关阅读:
    数据结构与算法(15)——冒泡法和选择法排序
    数据结构与算法(14)——二分查找算法
    数据结构与算法(13)—顺序查找法
    数据结构与算法(12)——动态规划案例
    Object Detection的一些进展(Valse2020.4.30)
    机器学习(1)——模型评估与选择
    数据结构与算法(12)—分治策略
    数据结构与算法(11)—递归
    数据结构与算法(10)——有序表OrderedList
    数据结构与算法(9)——无序表List
  • 原文地址:https://www.cnblogs.com/htsboke/p/10956807.html
Copyright © 2011-2022 走看看