2012-06-07 17 views
0

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

这似乎并不被允许的(错误消息:“‘MyBase’不是一个模块内有效”)

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

我如何可以调用内我的基类的方法扩展方法?

+0

您想访问的方法的范围是什么? – Chriseyre2000

+0

该方法受保护。这是问题吗? –

回答

1

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

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

那么一个可能的实现是Return obj.IsOutOfSpace。这反过来使得您很可能实际上没有任何用于此扩展方法的任何用途,因为您要扩展的类已经具有IsOutOfSpace属性。

只能使用扩展方法向类中添加方法。只有在不能更改课程时才这样做。

+0

我将更正我的代码。你是对的。 @chriseyre的评论也是正确的。我无法调用受保护的方法。 –