c# autofac结合WebApi的使用

原文: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 }) };
        }
    }

原文地址:https://www.cnblogs.com/lonelyxmas/p/10957825.html

时间: 2024-08-30 01:25:35

c# autofac结合WebApi的使用的相关文章

AutoFac实现WebAPI依赖注入(EF以及Mysql)

什么是依赖注入? 我们以实际的例子来加以介绍 实体如下 public class Product { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } EF的实现如下 public class ProductContext: DbContext { public ProductContext(): base( "ProductContext"

AutoFac+MVC+WebApi源码----我踩过的坑

发现网上关于AutoFac的Demo源码比较少,综合MVC和WepApi的更少.所以贴出源码 WebApi项目(MVC4不需要引用,历史遗留问题,人懒没删) 建项目 新建类库IAutoFacDal(接口),AutoFacDal,IAutoFacLogic(接口),AutoFacLogic,AutoFacDto(参数),AutoFacEntity(数据库实体) 新建WebApi AutoFacEntity User源码 1 using System; 2 using System.Collecti

Autofac - MVC/WebApi中的应用

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/asp-net-core-overview.html http://www.yuanjiaocheng.net/ASPNET-CORE/asp.net-core-environment.html http://www.yuanjiaocheng.net/ASPNET-CORE/newproject.html http://www.yuanjiaocheng.net/webapi/web-api-gais

autofac + owin + webform + mvc + webapi集成demo

http://git.oschina.net/shiningrise/AutofacOwinDemo using Microsoft.Owin; using Owin; using System.Web.Mvc; using Autofac; using Autofac.Integration.Owin; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; using System.Web.Http; using Sy

Autofac 同时支持MVC 与Webapi

1.引用 using Autofac; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; 2.在Global中的Application_Start方法中添加如下 // Get your HttpConfiguration. var config = GlobalConfiguration.Configuration; var builder = new ContainerBuilder(); //builder.Re

autofac依赖注入MVC5和webapi2

终于把丢了好久的MVC捡起来,虽然有些许印象,但是还需要重新学习. 很多书本中都提到依赖注入,控制反转等概念,这些都是为了实现松耦合层.组件和类目的. 常见的是使用Repository类分离Controller和Model的直接联系.而为了解除Repository类和Controller的紧密联系,通常不是直接定义Repository类并实例化,而是通过Controller的构造方法注入指定的Repository. 1 public class ValuesController : ApiCon

autofac使用笔记

在之前的项目中用来解耦的使用的轻型IOC框架是unity,它的使用也是很方便的提供在之前的文章的也提到过它的使用方式,但是使用久了之后发现了它的不足之处就是需要配置xml文件来对应的接口和实现的关系.总觉这种不够灵活.因为随着项目的进行需要配置的接口和实现会越来越多.配置起来很是麻烦还容易出错.我在想有没有别的IOC框架能够一劳永逸的实现解耦而不是通过配置呢. 答案是肯定的. 那就是autofac ,这是我在Github 上找到的轻型的IOC框架.它的使用方式也特别的简单.原理呢简单来说.是通过

Autofac框架使用遇到的问题

1) 安全透明方法"Autofac.Integration.Mvc.RegistrationExtensions.RegisterControllers(Autofac.ContainerBuilder, System.Reflection.Assembly[])"尝试访问安全关键类型"Autofac.Builder.IRegistrationBuilder`3<System.Object,Autofac.Features.Scanning.ScanningActiva

对IOC模式与容器Autofac在MVC里面的一些用法

IOC模式与Autofac的实例 一:对于IOC模式(控制翻转)的简单认识可以去参考秋风的博客,他介绍的容器是Unity,http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075.html 二:下面我介绍一下在项目中对IOC模式与Autofac在MVC中的运用 1:用于我们公司数据库用的是pg,所以相应也使用了NHibernate,如果大家使用的数据库是SQL Server,相当于EF 首先定义数据访问的接口: 1 public interf