如何在.NET中修改方法的内容

时间:2013-08-23 21:00:22

标签: c# .net vb.net reflection shadows

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

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

1 个答案:

答案 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