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:
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
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'obtiens le message d'erreur suivant: Message="Impossible d'effectuer un cast d'un objet de type 'Microsoft.VisualBasic.ForEachEnum' en type 'ClassIEnumerator'."
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()
Comment dois-je faire pour associer l'énumérateur à la collection et que celle-ci soit toujours "public"? Je bloc...
Merci de votre aide.
Partager