Classe do exemplo COM (guia de programação 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 do C#)

Compilação de página, Designer de projeto (C#)

Conceitos

Guia de programação do C#