Compartir a través de


Clases COM de ejemplo (Guía de programación de C#)

A continuación se incluye un ejemplo de una clase que se expondría como un objeto COM. Una vez insertado este código de ejemplo en un archivo .cs y agregado al proyecto, establezca la propiedad Registrar para interoperabilidad COM en True. Para obtener más información, vea How to: Register a Component for COM Interop.

Exponer objetos de Visual C# para COM requiere declarar una interfaz de clase, una interfaz de eventos si es necesario y la propia clase. Los miembros de clase deben seguir estas reglas para que sean visibles en COM:

  • La clase debe ser pública.

  • Las propiedades, métodos y eventos deben ser públicos.

  • Las propiedades y métodos deben declararse en la interfaz de clase.

  • Los eventos deben declararse en la interfaz de eventos.

Los demás miembros públicos de la clase que no se hayan declarado en estas interfaces no serán visibles para COM, pero lo serán para el resto de objetos de .NET Framework.

Para exponer propiedades y métodos en COM, se deben declarar en la interfaz de clase y marcarlos con el atributo DispId, e implementarlos en la clase. El orden en que se declaran los miembros en la interfaz es el orden utilizado para la tabla vtable COM.

Para poder exponer los eventos de una clase, se deben declarar en la interfaz de eventos y marcarlos con un atributo DispId. La clase no debe implementar esta interfaz.

La clase implementa la interfaz de clase; puede implementar más de una interfaz, pero la primera implementación debe ser la interfaz de clase predeterminada. Implemente los métodos y propiedades expuestos para COM aquí. Deben marcarse como públicos y coincidir con las declaraciones de la interfaz de clase. Asimismo, declare los eventos que inicia la clase aquí. Deben marcarse como públicos y coincidir con las declaraciones de la interfaz de eventos.

Ejemplo

using System.Runtime.InteropServices;

namespace project_name
{
    [Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
    public interface ComClass1Interface
    {
    }

    [Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"), 
        InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface ComClass1Events 
    {
    }

    [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
        ClassInterface(ClassInterfaceType.None),
        ComSourceInterfaces(typeof(ComClass1Events))]
    public class ComClass1 : ComClass1Interface
    {
    }
}

Vea también

Referencia

Interoperabilidad (Guía de programación de C#)

Compilar (Página, Diseñador de proyectos) (C#)

Conceptos

Guía de programación de C#