VB.NET:向类添加其他函数
“Rectangle”类没有公开操作矩形所需的所有函数。 例如,我经常只想更改“.Bottom”值。 现有的函数都不允许这样做,我发现自己创建了一个新的矩形来做我需要的事情 这就引出了一个一般性问题: 是否可以向框架中的一个类添加其他函数,这些函数在我的整个项目中都可用?您可以VB.NET:向类添加其他函数,vb.net,class,customization,Vb.net,Class,Customization,“Rectangle”类没有公开操作矩形所需的所有函数。 例如,我经常只想更改“.Bottom”值。 现有的函数都不允许这样做,我发现自己创建了一个新的矩形来做我需要的事情 这就引出了一个一般性问题: 是否可以向框架中的一个类添加其他函数,这些函数在我的整个项目中都可用?您可以 通过扩展类(如矩形) 创建一个包含矩形实例(有一个矩形)的自定义类,并添加其他属性和方法 请注意,您不能从矩形继承来扩展它的功能,因为它不是类,而是结构 下面是一个简单的扩展: Module RectangleExten
矩形
)矩形
实例(有一个矩形)的自定义类,并添加其他属性和方法矩形继承来扩展它的功能,因为它不是类
,而是结构
下面是一个简单的扩展:
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
你可以用。但有一个缺点:不能以这种方式使用类的任何私有或受保护成员
另一方面,您可以尝试创建自己的类并从该类继承,但有两个可能的缺点:
- 您仍然不能使用该继承类中的任何私有成员(但可以使用受保护的成员)
- 并不是框架中的每个类都可以被继承——其中一些类被标记为密封的,不能被继承
是的。你可以用扩展方法来做。只是要挑剔一点,但Bottom是一个加上Y和Height属性计算出来的值(这就是只读的原因),你打算如何更改矩形的底部,修改Y或矩形的高度?我明白你的观点,我同意你的观点,因为它的一部分是如何设计的。但是,同样的,能够改变X和Y有什么用呢?或者有一个.充气方法,但没有过载,这将允许我只在一侧充气,而不是收缩/膨胀它,并让X和Y随它一起改变。对我来说,这看起来像“是的,让我们把最常见的函数/方法添加到矩形中”,在回家的中途,他们注意到他们必须在某个地方画一条线。对我来说,他们画得太早了。你能告诉我在哪里规定底部是只读属性吗?
Dim rec = New Rectangle(New Point(100, 100), New Size(50, 50))
rec.move(100, 200)