文章目錄 項目地址 一、Error Pattern 1.1 定義Error類 1. ErrorType 可發生的錯誤類型 2. Error類 3. ValidataionError 1.2 給每個實體創建Error類 1. CategoryError類 2. TicketErrror類 3. EventErrror類 二、Result Pattern 1.1 自定義返回Result 1.2 Api層的Result返回處理 1. Match方法使用委托去除if else判斷 2. ApiResults專門處理Problem的返回 3. 靜態方法和實例方法this補充 4. 泛型委托`Func<TOut>` 1.3 Result Pattern使用 1. 只需要返回一個Guid 2. 非Controller里的報錯 三、Dapper復雜查詢拼接 四、Common模塊提取 4.1 Common組成 4.2 通用服務注冊 1. Application層的服務 2. Infrastructure層 3. Program里傳參 五、多模塊配置 5.1 創建Events模塊單獨配置 5.2 創建ConfigurationExtension 六、HTTP context 1. 中間件共享的數據容器 2. 安全、認證相關數據 3. Trace / Telemetry / Logging 相關數據 7、Middleware Pipeline Behavior 7.1 日志處理 1. 創建日志處理管道行為 2. 注冊behavior在MediarR里 3. program里配置serilog 7.2 異常處理 1. 自定義異常類 2. 異常處理管道行為 3. Api層全局異常處理 4. 將異常處理添加到服務里 7.3 Validation 7.4 注冊Pipeline behavior
項目地址
dbt
airflow
一、Error Pattern
在使用Result Pattern之前,先定義好Error類
1.1 定義Error類
該項目所有用到的Error類型,先定義出來
1. ErrorType 可發生的錯誤類型
2. Error類
主要作用是定義Error發生之后,返回的格式,主要通過工廠方法進行Error的處理
public record Error
{ public static readonly Error None = new ( string . Empty, string . Empty, ErrorType. Failure) ; public static readonly Error NullValue = new ( "General.Null" , "Null value was provided" , ErrorType. Failure) ; public Error ( string code, string description, ErrorType type) { Code = code; Description = description; Type = type; } public string Code { get ; } public string Description { get ; } public ErrorType Type { get ; } public static Error Failure ( string code, string description) => new ( code, description, ErrorType. Failure) ; public static Error NotFound ( string code, string description) => new ( code, description, ErrorType. NotFound) ; public static Error Problem ( string code, string description) => new ( code, description, ErrorType. Problem) ; public static Error Conflict ( string code, string description) => new ( code, description, ErrorType. Conflict) ;
}
3. ValidataionError
1.2 給每個實體創建Error類