【发布时间】:2018-10-01 22:49:27
【问题描述】:
Drawing.Rectangle 有方法
Dim r As Drawing.Rectangle = Drawing.Rectangle.FromLTRB(...)
我想写一个类似那个函数的扩展方法。扩展方法将创建一个包含所有给定点的矩形。
我已经写了这样一个方法,但是“矩形”没有注意到它有这个新方法。
当我尝试访问该方法时,Intellisense 找不到它。
我已经在这样的模块中声明了扩展:
<Extension()>
Public Function FromPoints(ByVal points As List(Of Drawing.Point)) As Drawing.Rectangle
Dim leastX As Integer = 0
Dim maxX As Integer = 0
Dim leastY As Integer = 0
Dim maxY As Integer = 0
Dim bDone As Boolean = False
For Each p As Point In points
If Not bDone Then
bDone = True
leastX = p.X
maxX = p.X
leastY = p.Y
maxY = p.Y
Else
If p.X < leastX Then
leastX = p.X
End If
If p.X > maxX Then
maxX = p.X
End If
If p.Y < leastY Then
leastY = p.Y
End If
If p.Y > maxY Then
maxY = p.Y
End If
End If
Next
Return Drawing.Rectangle.FromLTRB(leastX, leastY, maxX, maxY)
End Function
我错过了什么让它工作吗?
【问题讨论】:
-
扩展方法扩展的内容不是由它返回的内容来标识的,而是由它的第一个参数来标识的。因此,如果第一个参数是
List(Of Point),那么将为List(Of Point)类型的对象添加扩展方法。请注意,扩展方法不能是Shared,它们仅适用于实例化对象。