2016-01-28 1 views
1

J'ai la classe de suivi dans vb6:vb.net équivalent de la fonction VB6 attributs

Public Function NewEnum() 
    Attribute NewEnum.VB_UserMemId = -4 
    Attribute NewEnum.VB_MemberFlags = "40" 

    NewEnum = mcolFields.[_NewEnum] 

End Function 

Quelles seraient les attributs équivalents dans vb.net? Je sais que vous devez mettre les attributs dans <> et je trouve aussi this SO post, mais cela n'a pas résolu mon problème.

Répondre

2

GetEnumerator() est l'équivalent exact. Il est exposé en tant que NewEnum dans le code <ComVisible(True)>. Implémentez simplement l'interface System.Collections.IEnumerable, l'interface non générique.

1

Quelques infos à ce sujet est ici: https://christopherjmcclellan.wordpress.com/2015/04/21/vb-attributes-what-are-they-and-why-should-we-use-them/

Il y a une plus grande valeur spéciale pour VB_UserMemId et cette valeur est -4. Le négatif 4 indique toujours que la fonction marquée doit renvoyer un énumérateur [_NewEnum].

Je dirais que dans ce cas vous pouvez les ignorer. Donc votre équivalent devrait être quelque chose comme ceci:

Public Function NewEnum() As mcolFields 
    Return New mcolFields 
End Function