Tutorial: Crear objetos COM con Visual Basic 2005

Cambiar vista:
Sin script
Conceptos del lenguaje Visual Basic
Tutorial: Crear objetos COM con Visual Basic 2005

Cuando se crean nuevas aplicaciones o componentes, es mejor crear ensamblados de .NET Framework. No obstante, Visual Basic 2005 facilita también la exposición de un componente de .NET Framework en COM, lo que le permite proporcionar nuevos componentes a conjuntos de aplicaciones heredadas que requieren componentes COM. En este tutorial se muestra cómo se utiliza Visual Basic para exponer los objetos de .NET Framework como objetos COM, tanto con la plantilla de clase COM como sin ella.

El modo más sencillo de exponer un objeto COM es utilizar la plantilla de clase COM. Esta plantilla crea una clase nueva y, a continuación, configura el proyecto para generar la clase y el nivel de interoperabilidad como un objeto COM y registra este objeto en el sistema operativo.

NoteNota

Aunque es posible exponer una clase creada con Visual Basic como un objeto COM en el código no administrado que se va a utilizar, en realidad, no se trata de un verdadero objeto COM y Visual Basic no lo puede utilizar. Para obtener más información, vea Interoperabilidad COM en aplicaciones .NET Framework.

NoteNota

Los cuadros de diálogo y los comandos de menú que se ven pueden diferir de los descritos en la Ayuda, dependiendo de los valores de configuración o de edición activos. Para cambiar la configuración, elija la opción Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Para crear un objeto COM mediante la plantilla de clase COM

  1. Abra un nuevo proyecto de aplicación para Windows en el menú Archivo; para ello, haga clic en Nuevo proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, situado bajo el campo Tipos de proyecto, compruebe que se ha seleccionado Windows. Seleccione Biblioteca de clases en la lista Plantillas y, a continuación, haga clic en Aceptar. Aparecerá el proyecto nuevo.

  3. Seleccione Agregar nuevo elemento en el menú Proyecto. Se abrirá el cuadro de diálogo Agregar nuevo elemento.

  4. Seleccione Clase COM en la lista Plantillas y, a continuación, haga clic en Agregar. Visual Basic agrega una nueva clase y configura el nuevo proyecto para la interoperabilidad COM.

  5. Agregue código a la clase COM, como propiedades, métodos y eventos.

  6. Seleccione Generar ClassLibrary1 en el menú Generar. Visual Basic genera el ensamblado y registra el objeto COM en el sistema operativo.

Crear objetos COM sin la plantilla de clase COM

También puede crear una clase COM manualmente en lugar de utilizar la plantilla de clase COM. Este procedimiento resulta útil cuando se trabaja desde la línea de comandos o cuando se desea tener más control sobre la definición de los objetos COM.

Para configurar el proyecto para generar un objeto COM

  1. Abra un nuevo proyecto de aplicación para Windows desde el menú Archivo; para ello, haga clic en Nuevo proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, situado bajo el campo Tipos de proyecto, compruebe que se ha seleccionado Windows. Seleccione Biblioteca de clases en la lista Plantillas y, a continuación, haga clic en Aceptar. Aparecerá el proyecto nuevo.

  3. En el Explorador de soluciones, haga clic con el botón secundario del mouse en su proyecto y, a continuación, seleccione Propiedades. Se mostrará el Diseñador de proyectos.

  4. Haga clic en la ficha Compilar.

  5. Active la casilla de verificación Registrar para interoperabilidad COM.

Para configurar el código de la clase para crear un objeto COM

  1. En el Explorador de soluciones, haga doble clic en Class1.vb para mostrar el código que contiene.

  2. Cambie el nombre de la clase a ComClass1.

  3. Agregue a ComClass1 las constantes que se especifican a continuación. Estas constantes almacenarán las constantes de identificador único global (GUID) que necesitan los objetos COM.

    Visual Basic
    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
    
  4. Para obtener un identificador único global (GUID), abra Guidgen.exe para iniciar la utilidad Guidgen. Seleccione Formato de Registro en la lista de formatos proporcionados por la aplicación Guidgen. Haga clic en el botón Nuevo GUID para generar el GUID y, a continuación, haga clic en el botón Copiar para copiar el GUID al Portapapeles.

  5. Reemplace la cadena vacía de ClassId con el GUID, y elimine las llaves de apertura y cierre. Por ejemplo, si el GUID proporcionado por Guidgen es "{2C8B0AEE-02C9-486e-B809-C780A11530FE}", el código debería aparecer como se muestra a continuación.

    Visual Basic
    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
    
  6. Repita los pasos anteriores para las constantes InterfaceId y EventsId, como en el ejemplo siguiente.

    Visual Basic
    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    
    
    NoteNota

    Asegúrese de que los GUID son nuevos y únicos; de lo contrario, el componente COM podría entrar en conflicto con otros componentes COM.

  7. Agregue el atributo ComClass a ComClass1, especificando los GUID correspondientes al Id. de clase, al Id. de interfaz y a los Id. de eventos, como en el siguiente ejemplo:

    Visual Basic
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    
  8. Las clases COM deben tener un constructor Public Sub New() sin parámetros; de lo contrario, la clase no se registrará correctamente. Agregue un constructor sin parámetros a la clase:

    Visual Basic
    Public Sub New()
        MyBase.New()
    End Sub
    
    
  9. Agregue propiedades, métodos y eventos a la clase, y agregue la instrucción End Class al final. Seleccione Generar solución en el menú Generar. Visual Basic genera el ensamblado y registra el objeto COM en el sistema operativo.

    NoteNota

    Los objetos COM que genere con Visual Basic 2005 no se pueden utilizar en otras aplicaciones de Visual Basic 2005 porque no son auténticos objetos COM. Si intenta agregar referencias a estos objetos COM se producirá un error. Para obtener información detallada, vea Interoperabilidad COM en aplicaciones .NET Framework.

Vea también

Tareas

Tutorial: Implementar la herencia mediante objetos COM
Solución de problemas de interoperabilidad

Referencia

ComClassAttribute (Clase)
#Region (Directiva)

Otros recursos

Interoperabilidad COM
Interoperabilidad COM en aplicaciones .NET Framework