zoukankan      html  css  js  c++  java
  • .net core3.0 使用Autofac实现自动注入

    大多时候我们采用一下方式进行依赖注入

     随着业务的增长,接口跟实现类会越来越多,还需要手动一个个的注册依赖项,有时候会出现忘了写配置,导致程序报错,如果是多人开发,可能还会导致代码冲突,后期维护起来相对来说比较麻烦。

    使用Autofac自动注入

    1、安装Autofac.Extensions.DependencyInjection

    2、修改Program.cs

    1  public static IHostBuilder CreateHostBuilder(string[] args) =>
    2             Host.CreateDefaultBuilder(args)
    3                 .ConfigureWebHostDefaults(webBuilder =>
    4                 {
    5                     webBuilder.UseStartup<Startup>();
    6                 })
    7                .UseServiceProviderFactory(new AutofacServiceProviderFactory());

    3、在Startup.cs中添加ConfigureContainer方法

    1  public void ConfigureContainer(ContainerBuilder builder)
    2         {
    3             builder.RegisterAssemblyTypes(typeof(Program).Assembly)
    4                     .Where(x => x.Name.EndsWith("service", StringComparison.OrdinalIgnoreCase)).AsImplementedInterfaces();
    5         }

    接口层以I开头Service层都要以Service为结尾。

    测试:

     1  public interface IArticleService
     2     {
     3         IEnumerable<Article> QueryArticle();
     4 
     5         int SaveArticle(Article article);
     6 
     7         Article GetArticleById(int Id);
     8 
     9         Page<Article> GetArticlePage(int page, int size, string searchval);
    10 
    11         int DelArticle(int Id);
    12     }
     1  public class ArticleService : BaseService, IArticleService
     2     {
     3         /// <summary>
     4         /// 查询文章
     5         /// </summary>
     6         /// <returns></returns>
     7         public Article GetArticleById(int Id)
     8         {
     9             var sql = Sql.Builder.Append("SELECT * FROM MST_ARTICLE WHERE Id=@id", new
    10             {
    11                 id = Id
    12             });
    13             return database.SingleOrDefault<Article>(sql);
    14         }
    15 }

    在控制器中注入IArticleService

     1  [ApiController]
     2     [Route("api/[controller]/[action]")]
     3     public class ArticleController : Controller
     4     {
     5         private IArticleService _articleService;
     6 
     7         private readonly IMapper _mapper;
     8 
     9         public ArticleController(IArticleService articleService, IMapper mapper)
    10         {
    11             _articleService = articleService;
    12             _mapper = mapper;
    13         }
  • 相关阅读:
    【Unity】A星寻路(UGUI)
    MD5加密处理
    Unity连接Sql数据库(PC端)
    连接数据库后的一般操作
    连接数据库后的简单查询
    连接数据库的几种方式
    关于Unity实现三维物体裁剪功能
    关于Unity实现AR功能(五)摄像头转换与闪光灯开关控制
    关于Unity实现AR功能(四)设置相机的对焦
    关于Unity实现AR功能(二)进阶触发及手势
  • 原文地址:https://www.cnblogs.com/nayilvyangguang/p/11989580.html
Copyright © 2011-2022 走看看