(五)React Ant Design Pro + .Net5 WebApi:後端環境搭建-Autofac注入+ 泛型倉儲

冬先生發表於2022-01-03

一、 簡介

Autofac與.Net Core自帶DI的區別,大佬級的文章數不勝數。我只是根據實際應用簡單介紹(非常簡單的那種)
1、批量注入,自帶DI需要自己寫迴圈反射注入,Autofac現成方法,簡潔的多。
2、其他功能,Autofac玩法豐富,官網或其他文章都有介紹。

二、 使用

1、Nuget
2、Program.cs
3、Startup.cs
這裡需要新增一個方法,在方法裡進行注入,注入時在最後帶上.PropertiesAutowired()是開啟屬性注入。如果內容太多比較臃腫,注入模組也可以單拎出去

//新建註冊類,繼承Autofac.Module,修改Startup.cs
public void ConfigureContainer(ContainerBuilder builder)
{
    builder.RegisterModule(new AutofacModuleRegister());
}
public class AutofacModuleRegister : Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        //注入程式碼
    }
}

三、 倉儲

幾點理解看法或者說是疑問吧
1、看了好多概念定義,大佬們對倉儲都實現程式碼不盡相同。我Get到是:倉庫管理員通過某種方式對所有貨物進行管理。表象就是ORM運算元據庫,雖然方式不同,但是效果呢好像跟ADO的“暴力SQL”又沒啥區別,可能學習了DDD之後就能有更深層次的理解吧。
2、BaseService:IBaseService,如果跟BaseRepository:IBaseRepository結構一樣,只是讓TService通過BaseService再呼叫倉儲,那存在的意義是什麼?IBaseRepository已經注入,TService直接呼叫就好了。BaseService寫一些公共方法供TService呼叫,比如獲取許可權、字典等等,可能是這樣不符合設計模式?
3、結合實際業務開發及編碼習慣定義了每層類庫之間的關係,也許隨著學習深入能get到上述點,可以再完善。目前結構是這樣的:
Controller建構函式獲取所需服務介面ITService,每個介面對應一個服務實現類TService,並繼承BaseService,TService建構函式獲取倉儲供方法呼叫。
這是幾個空方法,EF登場後再完善。

四、相關閱讀

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0
https://autofac.readthedocs.io/en/latest/getting-started/index.html
https://autofac.readthedocs.io/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting
https://www.cnblogs.com/laozhang-is-phi/p/all-knowledge-for-netcore.html
https://www.cnblogs.com/clis/p/14294042.html
https://www.cnblogs.com/shewoqishui/p/14636489.html

相關文章