比較隨意,記錄下過程,以便忘了以後重拾。
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 ...