在c#中,我們在不寫子類的情況下,可以為類增加擴充套件方法,前提的被擴充套件的類不能使靜態類。
步驟如下:
定義乙個靜態 類以包含擴充套件方法。該類必須對客戶端**可見。 有關可訪問性規則的更多資訊,請參見 訪問修飾符(c# 程式設計指南)。
將該擴充套件方法實現為靜態方法,並使其至少具有與包含類相同的可見性。
該方法的第乙個引數指定方法所操作的型別;該引數必須以 this 修飾符開頭。
在呼叫**中,新增一條 using 指令以指定包含擴充套件方法類的 命名空間。
按照與呼叫型別上的例項方法一樣的方式呼叫擴充套件方法。
請注意,第乙個引數不是由呼叫**指定的,因為它表示正應用運算子的型別,並且編譯器已經知道物件的型別。 您只需通過 n 為這兩個形參提供實參。
示例:下面的示例在 customextensions.stringextension 類中實現了乙個名為 wordcount 的擴充套件方法。 該方法對 string 類進行操作,而該類被指定為第乙個方法引數。 customextensions 命名空間被匯入到應用程式命名空間中,並且該方法是在 main 方法內呼叫的。
using system.linq;
using system.text;
using system;
namespace customextensions
, stringsplitoptions.removeemptyentries).length;
} }
} namespace extension_methods_******
", i);
} }
}
這裡方法擴充套件的關鍵就是(this 要擴充套件的類 引數名)這個引數,這個引數也可以不在方法中使用。
如果類的某一方法是由擴充套件而得,那麼在呼叫的時候,會有相關文字標示。
參考資料: C 實現和呼叫自定義擴充套件方法
定義和呼叫擴充套件方法 定義乙個靜態類以包含擴充套件方法。該類必須對客戶端 可見。將該擴充套件方法實現為靜態方法,並使其至少具有與包含類相同的可見性。該方法的第乙個引數指定方法所操作的型別 該引數必須以 this 修飾符開頭。在呼叫 中,新增一條 using 指令以指定包含擴充套件方法類的命名空間。...
自定義擴充套件點
外掛程式開發久了,難免遇到需要自定義擴充套件點的需求,那麼如何自定義擴充套件點呢?以編寫乙個快捷選單項為例,說明如下 假設終端使用者可通過如下配置來擴充套件快捷選單項 com.kdevn.test.mypopupmenus label mynewaction class com.kdevn.test...
自定義MVC的Helper擴充套件方法
記得在開發asp.net時候,也經常性使用c 可以寫自己義的擴充套件方法,如 或而mvc的helper也可以自定義符合razor語法的方法。語法也是跟c 的類似,建立乙個靜態類,引用命名空間 using system.web.mvc 在方法或是函式第乙個引數為this htmlhelper 在vis...