.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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM