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