天天看点

【案例分享】Asp.net Core集成Autofac

1、简介

使用依赖注入框架能更好的管理对象的生命周期,能减少业务之间的依赖程度。在c#中有很多依赖注入插件,比较流行的有自带注入,Autofac、Unity、spring.net等。一般常用的还是自带和Autofac,今天我们来简单介绍下Autofac。

2、案例实战

创建一个Asp.Net Core Api项目:AutofacDemo

【案例分享】Asp.net Core集成Autofac

双击项目文件引入依赖:

<ItemGroup>
		<PackageReference Include="Autofac" Version="6.2.0" />
		<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />
	</ItemGroup>           

在Startup文件中添加命名空间:

using Autofac;
using Autofac.Features.AttributeFilters;           

在Program中替换服务提供商:

.UseServiceProviderFactory(new AutofacServiceProviderFactory())           
【案例分享】Asp.net Core集成Autofac

创建测试服务:IProductService、IProductService,ProductController

public interface IProductService
    {
        public string Get();
        public List<string> GetList();
    }

   public class ProductService : IProductService
    {
        public string Get()
        {
            return "优质蔬菜";
        }

        public List<string> GetList()
        {
            return new List<string>() { "优质农场品", "优质大豆" };
        }
    }

[Route("api/[controller]")]
    [ApiController]
    public class ProductController : ControllerBase
    {
        private readonly IProductService productService;
        public ProductController(IProductService productService)
        {
            this.productService = productService;
        }

        [HttpGet("Get")]
        public string Get()
        {
            return productService.Get();
        }

        [HttpGet("GetList")]
        public List<string> GetList()
        {
            return productService.GetList();
        }
    }           

注入依赖,需要在Startup中增加服务配置方法:

public void ConfigureContainer(ContainerBuilder builder)
        {
            builder.RegisterType<ProductService>().As<IProductService>().SingleInstance();
        }           

启动项目,输入路由:

https://localhost:{你的端口号}/api/product/get           
【案例分享】Asp.net Core集成Autofac

简单的使用已经达到目的,如果你想更方便的使用,可以对依赖注入进行封装,通过模块或者扫描程序集来实现集中注入。

继续阅读