Bonjour!

Dans un module, j'ai une collection qui doit être accessible partout et à laquelle doit être assoié un énumérateur. J'ai créé une classe qui implémente l'interface IEnumerator dont le code est ci-dessous:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
Public Class ClassIEnumerator
        Implements IEnumerator
        Dim nPos As Integer = -1  '  Position de l'énumérateur
        Dim oCollEnum As Collection
        Private vReturnObject As Object
 
        Public Sub NewAsign(ByVal pCollEnum As Collection)
            oCollEnum = pCollEnum
        End Sub
 
        Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
            nPos = nPos + 1
            Return (nPos < oCollEnum.Count)
        End Function
 
        Public Sub Reset() Implements System.Collections.IEnumerator.Reset
            nPos = -1
        End Sub
 
        Public ReadOnly Property Current() As Object Implements System.Collections.IEnumerator.Current
            Get
                Try
                    Return oCollEnum.Item(nPos)
                Catch ex As IndexOutOfRangeException
                    Throw New IndexOutOfRangeException
                    MsgBox(ex)
                End Try
            End Get
        End Property
    End Class
J'associé l'énumérateur à la collection comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
' Zone déclaration
    Dim oCollNumPagesDesc As New Collection
    Dim oEnumDesc As New ClassInterfaces.ClassIEnumerator
 
' Zone Sub
            oEnumDesc = oCollNumPagesDesc.GetEnumerator()
J'obtiens le message d'erreur suivant: Message="Impossible d'effectuer un cast d'un objet de type 'Microsoft.VisualBasic.ForEachEnum' en type 'ClassIEnumerator'."

Comment dois-je faire pour associer l'énumérateur à la collection et que celle-ci soit toujours "public"? Je bloc...

Merci de votre aide.