代码之家  ›  专栏  ›  技术社区  ›  zznq

我的扩展方法没有显示在代码隐藏中

  •  3
  • zznq  · 技术社区  · 16 年前

    我在当前项目中定义了许多扩展方法。这是一个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根文件夹中定义,位于代码隐藏文件中(不工作)

    已选择public readonly属性()作为约会
    得到
    返回\u个约会。GetSelected()
    结束获得
    端部特性
    

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

    4 回复  |  直到 15 年前
        1
  •  10
  •   BC.    16 年前

    确保您的模块标记为public。

        2
  •  1
  •   Jon Skeet    16 年前

    试着“正常”地调用这些方法,也就是说,它们好像是标准的共享方法。如果您可以这样做而不完全限定名称空间中的类型,那么会发生一些非常奇怪的事情。您可以使用其他的VB9功能吗?

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

    如果您根本不能调用它,这是一个参考问题-但恐怕我以前在ASP.NET中自己也遇到过应用程序代码方面的问题,而且基本上没有足够的ASP.NET MOJO来进一步提供帮助。希望回答这些问题能帮助那些 但有能力帮助你:)

    编辑:好的,因此您不能使用任何VB9功能(请尝试使用Linq以外的功能以确定),并且不能从 App_Code 目录。你和Visual Studio有同事吗?你能在他们的机器上试一下吗?听起来你的安装有点问题。

        3
  •  0
  •   cjk    16 年前

    您是否尝试引用它们所在的程序集?另外,构建您的项目,并尝试从错误消息中猜测出什么是错误的。你也可以把它们放在这里。

        4
  •  0
  •   cjk    16 年前

    你试过关闭和重新打开vs吗?