1、简介
使用依赖注入框架能更好的管理对象的生命周期,能减少业务之间的依赖程度。在c#中有很多依赖注入插件,比较流行的有自带注入,Autofac、Unity、spring.net等。一般常用的还是自带和Autofac,今天我们来简单介绍下Autofac。
2、案例实战
创建一个Asp.Net Core Api项目:AutofacDemo
双击项目文件引入依赖:
<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())
创建测试服务: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
简单的使用已经达到目的,如果你想更方便的使用,可以对依赖注入进行封装,通过模块或者扫描程序集来实现集中注入。