Cómo exponer una enumeración definida en una biblioteca COM a través de interoperabilidad como el tipo de retorno de una función c #

Esperemos que la pregunta sea clara, pero para aclararla:

Tengo una dll VB6 que define una enumeración a la que me estoy refiriendo en mi C # dll. La dll de C # define una CCW de la manera correcta con una interfaz idispatch que declara que una función cuyo tipo de devolución es la enumeración.

Cuando se ejecuta regasm recibo una advertencia de que la enumeración no es COM visible y, por lo tanto, la función no se exporta. Dado que está definido en mi biblioteca VB6, habría pensado que ya es visible COM ya que está definido en una DLL de COM.

Me doy cuenta de que puedo dejar de jugar y usar un int para pasar la enumeración y simplemente hacer el casting a cada extremo, pero es frustrante y me gustaría saber si existe alguna forma.

Como se solicita aquí hay un código de ejemplo:

VB6 dll define una enumeración

Public Enum myEnum
    first = 0
    second = 1
End Enum

Esto se importa a través de la interoperabilidad en C # y si ves los metadatos se ve algo como esto

[Guid("EnumGUID")]
public enum myEnum
{
    first = 0,
    second = 1        
}

Entonces se define la interfaz CCW.

[ComVisible(true)]
[Guid("InterfaceGuid")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyCCWInterface
{
    [DispId(1)]
    myEnum myFunction();
}

Regasm se queja de que myEnum no es visible. Tengo que estar de acuerdo con esto ya que la vista de metadatos no tiene el atributo visible com. Extrañamente, si uso otros tipos definidos en la dll de VB para los argumentos de la función, no obtengo ninguna queja, simplemente parece ser la enumeración y supongo que es porque en realidad estoy exponiendo la implementación interoperada de la enumeración de VB6 y no la enumeración real

Así que creo que entiendo el problema, lo que me gustaría saber es si hay una manera de hacerlo funcionar utilizando enumeraciones que no impliquen piratear ningún código intermedio o generado automáticamente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta