我的扩展方法都没有显示在Code中

时间:2009-03-11 18:46:55

标签: .net-3.5

我在当前项目中定义了许多扩展方法。这是一个VB.NET项目。我在App_Code目录中的文件中使用这些方法没有问题,这与我定义方法的地方相同。但是,在我的page.aspx.vb代码页面后面,这些方法没有显示出来。我试过包含正确的命名空间,没有运气。

有没有人知道为什么我不能在代码隐藏文件中调用扩展方法?

在App_Code文件夹中定义

<Extension()> _
Public Function GetSelected(ByVal apps As List(Of Appointment)) As Appointment
    Dim selected = From a In apps _
                   Where a.Selected = True

    Return selected.Single
End Function

在App_Code文件夹中定义,在另一个类中(这个可以正常工作)

Public ReadOnly Property Selected() As Appointment
    Get
        Return _appointments.GetSelected()
    End Get
End Property

在App Root文件夹中定义,在代码隐藏文件内(不工作)

Public ReadOnly Property Selected() As Appointment
    Get
        Return _appointments.GetSelected()
    End Get
End Property

它们都在同一个应用程序中,没有外部引用。当我构建项目时没有错误,直到我尝试在后面的代码中使用扩展方法。此时错误是'GetSelected'不是'System.Collections.Generic.List(Of Appointment)'的成员

4 个答案:

答案 0 :(得分:10)

确保您的模块标记为公开。

答案 1 :(得分:1)

尝试“正常”调用方法 - 即好像它们是标准的共享方法。如果你可以在没有使用命名空间完全限定类型的情况下这样做,那么很奇怪的事情正在发生。你能使用其他任何VB9功能吗?

如果您只能通过完全限定类型来调用它,那么这就是Imports问题。

如果你根本不能调用它,这是一个参考问题 - 但我担心我之前在ASP.NET中遇到App_Code问题,并且基本上没有足够的ASP.NET mojo来进一步帮助。希望回答这些问题应该可以帮助那些 能够帮助你更多的人:)

编辑:好的,所以你不能使用任何VB9功能(尝试LINQ以外的东西)并且你无法从App_Code目录访问共享方法。你有Visual Studio的同事吗?你能在他们的机器上试试吗?这听起来像是你的装置出了问题。

答案 2 :(得分:0)

您是否尝试引用它们所在的组件?此外,构建您的项目并尝试猜出错误消息的错误。你也可以把它们中的一些放在这里。

答案 3 :(得分:0)

您是否尝试过关闭并重新打开VS?