0

我创建了一个模块来向类添加一些扩展方法。这个类继承自另一个父类。在我的扩展方法的代码中,我想使用 MyBase 引用基类。

这似乎是不允许的(错误消息:“ 'MyBase' 在模块中无效。 ”)

<Extension()>
Public Function Get_OutOfSpace(val as ClassA) As Boolean
    Return MyBase.IsOutOfSpace()
End Function

如何在扩展方法中调用我的基类的方法?

4

1 回答 1

1

这就是为什么他们强迫你在模块中编写扩展方法,这样你就不会犯错误使用 MyBase。但是您的代码至少还有另一件事是错误的,您没有扩展任何东西。扩展方法的第一个参数必须是对要扩展类型的对象的引用:

<Extension()>
Public Function Get_OutOfSpace(ByVal obj As Foo) As Boolean
    ''...
End Function

所以一个可能的实现是Return obj.IsOutOfSpace. 这反过来又使您很可能实际上根本没有使用此扩展方法,因为您要扩展的类已经具有 IsOutOfSpace 属性。

仅使用扩展方法向类添加方法。只有在您无法更改课程时才这样做。

于 2012-06-07T08:43:42.180 回答