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