扩展方法不是 List(Of ...) 的成员

Extension method not a member of List(Of ...)

我已将以下内容添加到我的项目中:

Imports System.Runtime.CompilerServices

Module ExtensionMethods

    <Extension()>
    Public Sub Move(Of T)(ByVal uBase As List(Of T), ByVal index As Integer, ByVal newIndex As Integer)

        If uBase.Count <= newIndex Then
            Debug.Assert(False)
            Return 'not possible!
        ElseIf newIndex < 0 Then
            Debug.Assert(False)
            Return 'not possible!
        End If

        Dim item As T = uBase.Item(index)
        uBase.RemoveAt(index)
        uBase.Insert(newIndex, item)

    End Sub

End Module

然后我创建了一个 class:

Public Class clsPageWordList

    Private m As New List(Of udtWordImage)

    Private m_CountCellsToOccupy As Integer = 0

    Private _iCur As Integer = 0

    Public Sub New()

        Me.ResetCurrentIndex()

    End Sub

    Public ReadOnly Property Count() As Integer

        Get
            Return m.Count
        End Get

    End Property

    Public Sub ResetCurrentIndex()

        _iCur = 0

    End Sub

    Public ReadOnly Property CurrentIndex() As Integer
        Get
            Return _iCur
        End Get
    End Property

    Public Sub Add(ByVal uText As String, ByVal uImageGUID As String)

        Dim n As New udtWordImage
        n.GeneralImageGUID = uImageGUID
        n.Text = uText

        m.Add(n)

    End Sub
    Public Sub Update(ByVal uIndex As Integer, ByVal uText As String, ByVal uImageGUID As String)

        Dim n As New udtWordImage
        n.Text = uText
        n.GeneralImageGUID = uImageGUID

        m(uIndex) = n

    End Sub

    Public ReadOnly Property Text(ByVal uIndex As Integer) As String
        Get
            Return m(uIndex).Text
        End Get
    End Property

    Public ReadOnly Property GeneralImageGUID(ByVal uIndex As Integer) As String
        Get
            Return m(uIndex).GeneralImageGUID
        End Get
    End Property

    Public Sub RemoveAt(ByVal uIndex As Integer)

        m.RemoveAt(uIndex)

    End Sub

    Public Sub MoveUp(ByVal uIndex As Integer)

        m.move(uIndex, uIndex - 1)

    End Sub

    Public Sub ScrollForward()

        Dim lNewCur As Integer = _iCur + m_CountCellsToOccupy


        If lNewCur > m.Count - 1 Then
            lNewCur = 0
            If lNewCur < 0 Then
                lNewCur = 0
            End If
        End If

        _iCur = lNewCur

    End Sub
    Public Sub ScrollToStart()

        _iCur = 0

    End Sub
    Public Sub ScrollToEnd()

        _iCur = (m.Count - 1) - m_CountCellsToOccupy

        If _iCur < 0 Then
            _iCur = 0
        End If

    End Sub
    Public Sub ScrollBackward()

        _iCur = _iCur - m_CountCellsToOccupy

        If _iCur < 0 Then
            _iCur = 0
        End If

    End Sub


    Public WriteOnly Property CountCellsToOccupy() As Integer
        Set(value As Integer)
            m_CountCellsToOccupy = value
        End Set
    End Property

    Public Sub MoveDown(ByVal uIndex As Integer)

        m.move(uIndex, uIndex + 1)

    End Sub
    Public Function ShallowCopy() As clsPageWordList

        Return DirectCast(Me.MemberwiseClone(), clsPageWordList)

    End Function
End Class

结构定义如下:

Public Structure udtWordImage
    Dim Text As String
    Dim GeneralImageGUID As String
    Dim WordListIndex As Integer
End Structure

现在编译器抱怨该行

m.move(uIndex, uIndex - 1)

错误是"Move is not a member of List(Of udtWordImage)"。

奇怪的是,如果我右键单击 Move 方法并 select "Go to definition",它会将我带到 ExtensionMethods 子程序。

这里出了什么问题?

谢谢!

忘记将模块标记为 public。

这样改就解决了问题:

Public Module ExtensionMethods