ABP雜燴 Extensions字尾擴充套件方法

2021-08-31 20:58:11 字數 1650 閱讀 1231

擴充套件方法使你能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。 擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。 對於用 c#、f# 和 visual basic 編寫的客戶端**,呼叫擴充套件方法與呼叫在型別中實際定義的方法沒有明顯區別。

詳細見官方文件:擴充套件方法(c# 程式設計指南)

* 需要寫在乙個靜態類中 

* 必須是乙個靜態方法 

* 通過第乙個引數和this關鍵字指定擴充套件的目標型別 

* 不同型別的擴充套件方法不一定要寫在同乙個類中

在abp框架原中會發現在很多地方帶有extensions的類,其主要作用是在不改變原有介面或類的基礎上擴充套件自定義的方法,從而方便使用,如queryableextensions類是對iqueryable進行擴充套件,裡面新增了分頁pageby、條件判斷whereif方法,**如下:

using system;

using system.linq;

using system.linq.expressions;

namespace abp.linq.extensions

return query.skip(skipcount).take(maxresultcount);

}/// /// used for paging with an object.

///

/// an object implements inte***ce

public static iqueryablepageby(this iqueryablequery, ipagedresultrequest pagedresultrequest)

/// /// filters a by given predicate if given condition is true.

///

/// a boolean value

/// predicate to filter the query

/// filtered or not filtered query based on

public static iqueryablewhereif(this iqueryablequery, bool condition, expression> predicate)

/// /// filters a by given predicate if given condition is true.

///

/// a boolean value

/// predicate to filter the query

/// filtered or not filtered query based on

public static iqueryablewhereif(this iqueryablequery, bool condition, expression> predicate)

}}

如上所述,對iqueryable擴充套件後,可以像呼叫原生方法一樣,使上層的呼叫感受不到區別和不用做過多的操作,方便對第三方的庫進行擴充套件,從而增加自定義需求,有效提高專案的開發效率。呼叫**如下:

public async task> getprojects(getprojectsinput input)

ABP雜燴 Extensions字尾擴充套件方法

原文 abp雜燴 extensions字尾擴充套件方法 擴充套件方法使你能夠向現有型別 新增 方法,而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。對於用 c f 和 visual basic 編寫的客戶端 呼...

18 Swift擴充套件 Extensions

擴充套件就是向乙個已有的類 結構體 列舉型別或協議型別新增新功能。而且還包括在沒有許可權獲取原始源 的情況下擴充套件型別的能力 逆向建模 swift中的擴充套件可以 新增計算型屬性和計算型靜態屬性 定義例項方法和型別方法 提供新的構造器 定義下標 定義和使用新的巢狀型別 使乙個已有型別符合某個協議 ...

快速冪 a b p和a b p

理解 所謂快速冪,就是解決大數運算的一種思想,更形象的理解為 位運算,而這個位是按二進位制來看的位,比如 8 2 3 1 2 2 0 2 10 2 00 即按二進位制表示為 1000 還可以理解 7634 5 76 5 34 5 5 只是我們將其用了二進位制來減少b,也就是迴圈次數,從而降低複雜度 ...