4

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

这给我带来了一个普遍的问题:是否可以向框架中的类添加其他功能,然后在我的整个项目中可用?

4

2 回答 2

7

你可以

  1. Rectangle通过扩展方法扩展类(如)
  2. 创建一个包含Rectangle实例(有一个矩形)的自定义类并添加其他属性和方法

请注意,您不能继承 fromRectangle来扩展它的功能,因为它不是 aClass而是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)
于 2012-12-23T18:58:10.090 回答
0

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

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

  • 您仍然不能使用该继承类中的任何私有成员(但可以使用受保护的成员)
  • 并非框架中的每个类都可以被继承 - 其中一些被标记为密封并且它们不能被继承
于 2012-12-23T19:11:16.317 回答