EntityModel 系列之 依賴注入

如果對NetCore中的依賴注入不瞭解決,建議先看看深入理解 ASP.NET Core 依賴注入

EntityModel對於原生依賴注入的封裝類:Agebull.Common.Ioc.IocHelper

一 IocHelper類

  1. ServiceCollection屬性
    暴露了NetCore原生的IServiceCollection對象,象原生一樣調用它
  2. AddTransient、AddScoped、AddSingleton
    與原生的方法作用相同

您需要特別清楚NetCore依賴注入的三種生命同期:單例、範圍、實例。

  1. Create 方法
    簡化依賴對象的構造。

二 如何使用

我想與其它框架的IServiceCollection對象保持一致
IocHelper.SetServiceCollection(services);

services爲其它框架的依賴對象服務,如在Startup.cs中如下使用

 public void ConfigureServices(IServiceCollection services)
 {
     IocHelper.SetServiceCollection(services);
 }
我希望有一個全局唯一對象而不去管理對象如何構造與銷燬
  1. 註冊依賴
IocHelper.AddSingleton<AppManageDb, AppManageDb>();

注意,這兩個泛型參數是一樣的

  1. 使用時調用依賴構造
var db = IocHelper.Create<AppManageDb>();

認真觀察你會發現,每次構造出的對象是同一個.

  1. 如果需求是範圍唯一(如一次API調用過程),註冊方法改爲AddScoped即可。
我構造了一個基類,已有基礎實現,但我希望將來派生類重載時可以輕鬆切換到派生類的實例
  1. 基類註冊
IocHelper.AddSingleton<BaseObject, BaseObject>();
  1. 當派生類實現時
IocHelper.AddSingleton<BaseObject, SupperObject>();

後註冊的會覆蓋之前的註冊。

我想控制構造的行爲
IocHelper.AddSingleton<BaseObject, SupperObject>(() => mycode);

mycode寫成你的構造行爲即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章