我创建了一个模块,将一些Extension Methods添加到一个类中。 此类继承自另一个父类。 在我的扩展方法的代码中,我想使用MyBase引用基类。
似乎不允许这样做(错误消息:“'MyBase'在模块中无效。”)
<Extension()>
Public Function Get_OutOfSpace(val as ClassA) As Boolean
Return MyBase.IsOutOfSpace()
End Function
如何在扩展方法中调用基类的方法?
答案 0 :(得分:1)
这就是为什么他们强迫你在模块中编写扩展方法,所以你不能错误地使用MyBase。但是你的代码至少还有一个问题,你没有扩展任何东西。扩展方法的第一个参数必须是对要扩展的类型的对象的引用:
<Extension()>
Public Function Get_OutOfSpace(ByVal obj As Foo) As Boolean
''...
End Function
所以可能的实施是Return obj.IsOutOfSpace
。这反过来使您很可能根本没有任何用于此扩展方法的用法,因为您要扩展的类已经具有IsOutOfSpace属性。
仅使用扩展方法向类添加方法。只有在你不能改变班级时才这样做。