我想知道是否存在一種在.Net框架類庫的類中添加方法的方法。將方法添加到VB.Net中.Net類庫的類中?
比方說,例如,我想創建一個類/模塊,在System.Windows.Forms.Clipboard
類增加了一個IsEmpty
功能,這是可能的?如果沒有,也許我可以在My
命名空間中的一個做呢? (My.Computer.clipboard
)
我有什麼替代方法來包裝整個班級? (和應該做manualy這是瘋了嗎?)
我想知道是否存在一種在.Net框架類庫的類中添加方法的方法。將方法添加到VB.Net中.Net類庫的類中?
比方說,例如,我想創建一個類/模塊,在System.Windows.Forms.Clipboard
類增加了一個IsEmpty
功能,這是可能的?如果沒有,也許我可以在My
命名空間中的一個做呢? (My.Computer.clipboard
)
我有什麼替代方法來包裝整個班級? (和應該做manualy這是瘋了嗎?)
您正在尋找擴展方法:http://msdn.microsoft.com/en-us/library/bb384936.aspx
擴展方法只能是
Sub
過程或Function
程序。所有擴展方法都必須標記爲擴展屬性<Extension()>
。擴展方法定義中的第一個參數指定方法擴展的數據類型。
下面是一個簡單的例子。 (公平的警告,我是一個C#開發,但我認爲這是正確的語法VB)
Imports System.Runtime.CompilerServices
Module MyExtensions
<Extension()>
Public Sub MyFunction(ByVal obj As TypeToAddFunctionalityTo)
' functionality here
End Sub
End Module
請注意,對於特定的System.Windows.Forms.Clipboard
類,擴展方法不會有任何幫助。擴展方法允許將函數添加到實例類型。在靜態使用類的情況下,例如Clipboard
,您永遠不會擁有它的任何實例。
此外,您不能繼承Clipboard
類,因爲它定義爲NotInheritable
。創建一個包裝類是可能的,但是,我會建議創建一個靜態的MyClipboardUtils
類,作爲內置類的附錄/兄弟。
我之前讀過但尚不清楚我的,你能提供一個使用.Net框架類庫類的小例子嗎?也是前一段時間,我有一個類似的問題(我找不到),一個人告訴我這只是在C#中可用,但不是VB,但在鏈接的URL的例子中,我看到VB示例,正如我所說我很困惑,謝謝 – ElektroStudios 2014-11-02 05:55:44
謝謝,但我仍不明白如何將它添加到「剪貼板」類。 – ElektroStudios 2014-11-02 06:06:08
我添加了一個簡單的例子。但是,擴展方法允許將函數添加到實例類型。在靜態類的情況下,例如'System.Windows.Forms.Clipboard',它們不會有什麼好處,因爲你永遠不會有'Clipboard'類型的實例。 – 2014-11-02 06:07:22
@furkle僅僅是爲了整理我的代碼,而不是調用一個自定義類來保存「IsEmpty」方法,我想先聲稱默認的「剪貼板」類來訪問我插入的方法。對不起,我的英語 – ElektroStudios 2014-11-02 05:56:56
啊,這有點不同。馬特有你要找的東西。 – furkle 2014-11-02 05:58:25
@furkle請你能提供一個如何在「剪貼板」類中添加方法的小例子嗎? – ElektroStudios 2014-11-02 06:06:49