Compartilhar via


Classe do exemplo COM (guia de programação de C#)

A seguir é um exemplo de uma classe que você deseja expor como um objeto COM. Após esse código foi 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 Como: Registrar um componente para interoperabilidade COM.

Expor objetos C# Visual COM requer a declaração de uma interface de classe, uma interface de eventos, se for necessário e a própria classe. Membros da 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 em eventos 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. A ordem em que os membros são declarados na interface é a ordem usada para o COM vtable.

Para expor os eventos de sua classe, declare-los na interface de eventos e marcá-las com um DispId atributo. A classe não deve implementar essa 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 públicos e devem coincidir com as declarações de interface de classe. Além disso, declare os eventos gerados pela classe aqui. Eles devem ser marcados 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

Interoperability (C# Programming Guide)

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

Conceitos

C# Programming Guide