2014-11-02 61 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