2010-06-03 4 views
7

C'est un suivi de mon previous question, mais vous n'avez pas besoin de le lire pour comprendre celui-là.Quelle interface de collection devrais-je utiliser dans .NET pour COM-interop?

Je concevais une interface dans .NET qui serait consommée à partir des applications COM (principalement VB6, mais Visual C++ 6 est également une possibilité) et je voudrais utiliser les types de collection comme argument et types de retour pour les méthodes dans L'interface.

Questions:

  1. Qu'arrive-t-VB6 intégré dans les types de collections (tableaux, collections, dictionnaires) quand ils passent par interop? Je pense actuelle est que:

    • tableaux ->System.Array
    • collections ->Microsoft.VisualBasic.Collection
    • dictionnaires ->System.Collections.Hashtable

    Est-ce exact?

  2. Quelles interfaces dois-je utiliser comme types de retour? IEnumerable, ICollection, IList, IDictionary? Serais-je capable de faire un For Each in VB6 pour itérer sur ces interfaces? Dois-je utiliser les variantes génériques ou non génériques des interfaces?
+0

Je dirais que les collections VB et dictionnaires traverseraient COM Interop et rester sous forme de collections VB et dictionnaires, de la même manière que n'importe quelle classe passerait par interop. – Brian

+0

Vous voudrez peut-être voir http://stackoverflow.com/questions/7003844/why-is-it-that-arraylist-works-with-com-interop-but-ilistt-doesnt et http://stackoverflow.com/ questions/269581/what-are-alternatives-to-generic-collections-for-com-interop – nawfal

Répondre

3

Je pense que cet article sur le CodeProject couvrira la plupart de vos questions sur Interop :)

http://www.codeproject.com/KB/COM/cominterop.aspx

+0

Malheureusement, ce n'est pas la réponse à la question. Je suis un peu pressé et je n'ai pas le temps de lire tout l'article en ce moment. J'apprécierais une réponse simple et spécifique. –

Questions connexes