2010-06-03 8 views
7

Eso es un seguimiento de mi previous question, pero no necesita leerlo para entenderlo.¿Qué interfaz de colección debo usar en .NET para COM-interoperabilidad?

Estoy diseñando una interfaz en .NET que se consumiría desde aplicaciones COM (principalmente VB6, pero Visual C++ 6 también es una posibilidad) y me gustaría usar los tipos de Colección como argumentos y tipos de retorno para los métodos en La interfaz.

Preguntas:

  1. Qué ocurre con el VB6 una función de tipos de colección (arrays, colecciones, diccionarios) cuando van a través de interoperabilidad? Mi opinión actual es que:

    • matrices ->System.Array
    • colecciones ->Microsoft.VisualBasic.Collection
    • Diccionarios ->System.Collections.Hashtable

    Es correcto?

  2. ¿Qué interfaces debo usar como tipos de devolución? IEnumerable, ICollection, IList, IDictionary? ¿Sería capaz de hacer un For Each en VB6 para iterar sobre estas interfaces? ¿Debo usar las variantes genéricas o no genéricas de las interfaces?
+0

Mi conjetura sería que las colecciones de VB y diccionarios irían a través de interoperabilidad COM y permanecer como colecciones de VB y diccionarios, de la misma manera que cualquier clase pasaría por interoperabilidad. – Brian

+0

Es posible que desee ver http://stackoverflow.com/questions/7003844/why-is-it-that-arraylist-works-with-com-interop-but-ilistt-doesnt y http://stackoverflow.com/ questions/269581/what-are-alternatives-to-generic-collections-for-com-interop – nawfal

Respuesta

3

creo que este artículo sobre el CodeProject cubrirá la mayor parte de sus preguntas sobre interoperabilidad :)

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

+0

Desafortunadamente esta no es la respuesta a la pregunta. Tengo un poco de prisa y no tengo tiempo para leer todo el artículo en este momento. Agradecería una respuesta simple y específica. –

Cuestiones relacionadas