ABP原始碼分析 服務配置 1

2022-01-14 16:02:18 字數 2168 閱讀 9845

比較隨意,記錄下過程,以便忘了以後重拾。

program.cs

internal static ihostbuilder createhostbuilder(string args) =>

host.createdefaultbuilder(args)

.configurewebhostdefaults(webbuilder =>

).useautofac() // 第乙個關注點

.useserilog();

public class startup

}

[notnull] this iservicecollection services,

where tstartupmodule : iabpmodule

[notnull] iservicecollection services,

where tstartupmodule : iabpmodule

[notnull] type startupmoduletype,

[notnull] iservicecollection services,

[notnull] type startupmoduletype,

[notnull] iservicecollection services,

) : base(

startupmoduletype,

services,

optionsaction)

[notnull] type startupmoduletype,

[notnull] iservicecollection services,

protected virtual void configureservices()

}// 依次呼叫每個模組的preconfigureservices, configureservices, postconfigureservices

//preconfigureservices

foreach (var module in modules.where(m => m.instance is ipreconfigureservices))

catch (exception ex)

phase of the module . see the inner exception for details.", ex);}}

//configureservices

foreach (var module in modules)

}try

catch (exception ex)

phase of the module . see the inner exception for details.", ex);}}

//postconfigureservices

foreach (var module in modules.where(m => m.instance is ipostconfigureservices))

catch (exception ex)

phase of the module . see the inner exception for details.", ex);}}

foreach (var module in modules)

}}

以上實現了每個模組服務的注入,即所有模組執行preconfigureservices,完成後所有模組執行configureservices,完成後所有模組執行postconfigureservices。

preconfigureservices即服務注入還沒開始,這裡可以做些什麼?

configureservices注入,

postconfigureservices所有服務已注入,這裡可以做些什麼?

public class authcenterdomainmodule : abpmodule

public override void configureservices(serviceconfigurationcontext context)

public override void postconfigureservices(serviceconfigurationcontext context)

}

ABP 原始碼分析彙總之 AutoMapper

安裝時只需要安裝 如下即可 findandautomaptypes方法中 typefinder.find 看名字就知道是根據裡面的條件,找到符合條件的型別。看一下原始碼,它是如何找的,public typefinder是介面,那它預設實現就是typefinder,我們在原始碼中很快找到了它 publ...

cvDilate 原始碼分析 1

在cv.h檔案中對cvdilate的定義如下 cvapi void cvdilate const cvarr src,cvarr dst,iplconvkernel element cv default null int iterations cv default 1 iplconvkernel 指...

leveldb原始碼分析1

leveldb是乙個key value型的儲存引擎,由google開發,並宣布在bsd許可下開放源 plain git clone plain cd leveldb make all 此時生成libleveldb.a庫檔案。拷貝leveldb的標頭檔案到 usr include下 plain cp ...