我想知道是否有一种方法可以“遮蔽”一个函数,下面的类是在我当前项目的程序集引用中,我不能以任何方式修改程序集的内容。
Public Class CoordinateSpace
Public Function FromPixelsY(ByVal y As Single) As Single
Return (Me.m_originY + ((y * Me.ZoomY) / (Me.m_dpiY / 100.0F)))
End Function
Public Function ToPixelsY(ByVal y As Single) As Single
Dim num2 As Single = ((y - Me.m_originY) / Me.ZoomY) * (Me.m_dpiY / 100.0F)
Me.CheckOverflow(num2)
Return num2
End Function
End Class
此外,在程序集中,我在许多类中有许多调用,如下所示:
Public Class Printer
public function testPx() as boolean
dim c as new CoordinateSpace
return c.ToPixelsY(18) > 500
end function
End Class
对于我的项目,我需要上述课程,以便在调用FromPixelsY
时返回ToPixelsY
中的内容。
有办法做到这一点吗?如果我继承了类并覆盖或遮蔽了这些方法,当testPx调用函数ToPixelsY时,它实际上是调用CoordinateSpace方法而不是我的新类'方法。
这是在VB.net中,但解决方案的任何.NET语言都可以。 希望这很清楚,谢谢!
答案 0 :(得分:1)
Public Class MyCoorSpace
inherits CoordinateSpace
Public Overrides Function ToPixelsY(ByVal y As Single) As Single
Return MyBase.FromPixelsY(y)
End Function
End Class
那是继承
现在,case类中的装饰是密封的(VB.NET中为NotInheritable
)
Public Class MyCoordSpace // here of course would be nice to implement same interface as CoordinateSpace, if any
private _cs as new CoordinateSpace()
Public Function ToPixelsY(ByVal y As Single) As Single
Return _cs.FromPixelsY(y)
End Function
End Class