MyBase不能用于扩展方法?

时间:2012-06-07 08:20:59

标签: vb.net extension-methods

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

所以可能的实施是Return obj.IsOutOfSpace。这反过来使您很可能根本没有任何用于此扩展方法的用法,因为您要扩展的类已经具有IsOutOfSpace属性。

仅使用扩展方法向类添加方法。只有在你不能改变班级时才这样做。