1

我想知道是否有一种方法可以“隐藏”一个函数,以下类在我当前项目的程序集引用中,我不能以任何方式修改程序集的内容。

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 语言都可以。希望这很清楚,谢谢!

4

1 回答 1

1
Public Class  MyCoorSpace 
 inherits CoordinateSpace



Public Overrides Function ToPixelsY(ByVal y As Single) As Single
    Return MyBase.FromPixelsY(y)
End Function  

End Class

那是继承

现在,案例类的装饰是密封的(NotInheritable在 VB.NET 中)

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
于 2013-08-23T21:30:08.223 回答