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#)