Compartilhar via


Exemplo de classe COM (Guia de Programação em C#)

Este é um exemplo de uma classe que você poderia expor como um objeto COM. Depois que esse código é colocado em um arquivo. cs e adicionado ao seu projeto, defina a Register for COM Interop propriedade para True. Para obter mais informações, consulte How to: Register a Component for COM Interop.

Expor objetos Visual C# COM requer a declaração de uma interface de classe, uma interface de eventos, se necessário e a própria classe. Membros de classe devem seguir estas regras para estar visível para COM:

  • A classe deve ser pública.

  • Propriedades, métodos e eventos devem ser públicos.

  • Propriedades e métodos devem ser declarados na interface de classe.

  • Eventos devem ser declarados o interface.

Outros membros públicos na classe que não sejam declarados nessas interfaces não ficará visíveis para COM, mas eles estarão visíveis aos outros.Objetos do NET Framework.

Para expor propriedades e métodos para COM, você deve declará-los na interface de classe e marcá-las com um DispId de atributo e implementá-los na classe. A ordem em que os membros são declarados na interface é a ordem usada para o COM vtable.

Para expor eventos de sua classe, você deve declará-los na interface de eventos e marcá-las com um DispId atributo. A classe não deve implementar esta interface.

A classe implementa a interface de classe; ele pode implementar mais de uma interface, mas a primeira implementação será a interface de classe padrão. Implemente os métodos e propriedades expostas a COM aqui. Eles devem ser marcados como públicos e devem coincidir com as declarações na interface de classe. Além disso, declare os eventos gerados pela classe aqui. Eles devem ser marcados como públicos e devem coincidir com as declarações na interface de eventos.

Exemplo

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
    {
    }
}

Consulte também

Referência

Interoperabilidade (Guia de Programação em C#)

Página de Compilação, Designer de Projeto (C#)

Conceitos

Guia de Programação em C#