• 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 }) };
            }
        }
  • 相关阅读:
    centos6和centos7升级openssh7.5脚本
    开通telnet服务,使用telnet登入
    彻底删除kafka的topic以及其中的数据
    redis集群创建
    curl 命令参数
    nginx.conf配置文件详解,白嫖的
    logstash迁移es数据
    es 常用查询
    pl/sql 存储过程
    es查看集群信息命令_cat和_cluster
  • 原文地址:https://www.cnblogs.com/htsboke/p/10956807.html
Copyright © 2020-2023  润新知