我想知道是否存在一种在.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