Exemplo classe COM (guia de programação translation from VPE for Csharp)
A seguir é um exemplo de uma classe exporia sistema autônomo um objeto COM.Após esse código foi colocado em um arquivo .cs e adicionado ao seu projeto, defina o Registrar para interoperabilidade com. propriedade True.Para obter mais informações, consulte Como: Registrar um componente para interoperabilidade com..
Expor objetos translation from VPE for Csharp Visual COM requer declarando uma interface de classe, uma interface de eventos se for necessário e a própria classe.Membros de classe devem seguir essas regras fiquem visíveis 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 evento interface.
Outros membros públicos na classe que não sejam declarados nessas interfaces não será visíveis para com., mas eles estarão visíveis a outros objetos do .NET estrutura.
Para expor propriedades e métodos para COM, você deve declará-los na interface de classe e marcá-las com um DispId atributo e implementá-los na classe. A ordem em que os membros são declarados na interface é a ordem usada para vtable COM.
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 essa interface.
A classe implementa a interface de classe; ela 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 marcado 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 marcado como públicos e devem coincidir com as declarações na interface de eventos.
Para obter mais informações, consulte Exemplo de interoperabilidade parte 1 de COM, Exemplo de interoperabilidade parte 2 de COM e Exemplos de interoperabilidade de COM.
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
{
}
}