“Rectangle”类不公开所有我需要操作矩形的函数。例如,我经常只想更改“.Bottom”值。 现有的功能都不允许我这样做,并且我发现自己正在创建一个新的矩形来完成我所需要的功能。VB.NET:向类添加其他功能
这给我带来了一个普遍的问题: 是否有可能在框架中的类中添加额外的函数,然后在我的整个项目中可用?
“Rectangle”类不公开所有我需要操作矩形的函数。例如,我经常只想更改“.Bottom”值。 现有的功能都不允许我这样做,并且我发现自己正在创建一个新的矩形来完成我所需要的功能。VB.NET:向类添加其他功能
这给我带来了一个普遍的问题: 是否有可能在框架中的类中添加额外的函数,然后在我的整个项目中可用?
你可以
Rectangle
)创建包含一个Rectangle
例如自定义类(有一个矩形),并添加附加属性和方法请注意,您不能继承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)
可以使用Extension Methods是现有的方法中,你可以使用。但是有一个缺点:你不能以这种方式使用任何私人或受保护的成员。
在另一方面,你可以尝试创建自己的类,并从一个继承,但有两个可能的缺点:
是。你可以使用扩展方法来做到这一点。 –
只是要挑剔,但Bottom是一个计算的值,加上Y和Height属性*(这就是只读的原因)*,您打算如何更改矩形的底部,修改Y或高度长方形? – Steve
我明白你的观点,并且我同意你的看法,因为它的一部分是如何设计的。但是,能够改变X和Y的用途又是什么?或者有一个.Inflate方法,但没有超载,只允许我在一边膨胀它,而不是缩小/扩大它,让X和Y随着它变化。对我来说,它看起来像是“是的,让我们将最常见的功能/方法添加到矩形”,而在回家的路上,他们发现他们必须在某处绘制线条。对我而言,他们抽得太早了。 – tmighty