2014-11-02 53 views
0

我想知道是否存在一種在.Net框架類庫的類中添加方法的方法。將方法添加到VB.Net中.Net類庫的類中?

比方說,例如,我想創建一個類/模塊,在System.Windows.Forms.Clipboard類增加了一個IsEmpty功能,這是可能的?如果沒有,也許我可以在My命名空間中的一個做呢? (My.Computer.clipboard

我有什麼替代方法來包裝整個班級? (和應該做manualy這是瘋了嗎?)

+0

@furkle僅僅是爲了整理我的代碼,而不是調用一個自定義類來保存「IsEmpty」方法,我想先聲稱默認的「剪貼板」類來訪問我插入的方法。對不起,我的英語 – ElektroStudios 2014-11-02 05:56:56

+1

啊,這有點不同。馬特有你要找的東西。 – furkle 2014-11-02 05:58:25

+0

@furkle請你能提供一個如何在「剪貼板」類中添加方法的小例子嗎? – ElektroStudios 2014-11-02 06:06:49

回答

3

您正在尋找擴展方法: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類,作爲內置類的附錄/兄弟。

+0

我之前讀過但尚不清楚我的,你能提供一個使用.Net框架類庫類的小例子嗎?也是前一段時間,我有一個類似的問題(我找不到),一個人告訴我這只是在C#中可用,但不是VB,但在鏈接的URL的例子中,我看到VB示例,正如我所說我很困惑,謝謝 – ElektroStudios 2014-11-02 05:55:44

+0

謝謝,但我仍不明白如何將它添加到「剪貼板」類。 – ElektroStudios 2014-11-02 06:06:08

+0

我添加了一個簡單的例子。但是,擴展方法允許將函數添加到實例類型。在靜態類的情況下,例如'System.Windows.Forms.Clipboard',它們不會有什麼好處,因爲你永遠不會有'Clipboard'類型的實例。 – 2014-11-02 06:07:22