VB.NET:向类添加其他函数

时间:2012-12-23 18:53:49

标签: vb.net class customization

“Rectangle”类没有公开我需要操作矩形的所有函数。 例如,我经常只想更改“.Bottom”值。 现有的功能都不允许我这样做,我发现自己创建了一个新的矩形来完成我需要的工作。

这让我想到一个普遍的问题: 是否可以在框架中向类中添加其他函数,然后在我的整个项目中可用?

2 个答案:

答案 0 :(得分:7)

你可以

  1. 通过extension methods
  2. 扩展课程(如Rectangle
  3. 创建一个包含Rectangle实例(具有矩形)的自定义类,并添加其他属性和方法
  4. 请注意,您无法继承Rectangle以扩展其功能,因为它不是Class而是Structure

    这是一个简单的扩展:

    Module RectangleExtensions
    
        <System.Runtime.CompilerServices.Extension()> _
        Public Sub Move(rectangle As Rectangle, x As Int32, y As Int32)
            rectangle.Location = New Point(x, y)
        End Sub
    
    End Module
    

    您可以像Rectangle

    中的现有方法一样使用它
    Dim rec = New Rectangle(New Point(100, 100), New Size(50, 50))
    rec.move(100, 200)
    

答案 1 :(得分:0)

您可以使用Extension Methods。但是有一个缺点:你不能以这种方式使用类的任何私有或受保护的成员。

另一方面,您可以尝试创建自己的类并继承该类,但有两个可能的缺点:

  • 您仍然无法使用该继承类中的任何私有成员(但可以使用受保护的类)
  • 并非每个来自框架的类都可以继承 - 其中一些被标记为密封且无法继承