Przykład klasy COM (C# Programming Guide)
Poniżej przedstawiono przykład klasy, które mogłyby narazić jako obiekt COM.Po kod ten został umieszczony w pliku cs i dodane do projektu, ustaw zarejestrować do współdziałania z modelem COM właściwość, aby True.Aby uzyskać więcej informacji, zobacz How to: Register a Component for COM Interop.
Uwidacznianie Visual C# obiektów COM wymaga deklarowanie interfejsu klasy interfejsu zdarzenia, jeśli jest to wymagane i ta sama klasa.Członkowie klasy należy wykonać te zasady są widoczne dla modelu COM:
Tej klasy muszą być publiczne.
Właściwości, metod i zdarzeń muszą być publiczne.
Właściwości i metody musi być zadeklarowany w interfejsie klasa.
Zdarzenia musi zostać zadeklarowany w przypadku interfejsu.
Inni członkowie publiczne w klasie, które nie są zadeklarowane w tych interfejsów nie będzie widoczna dla modelu COM, ale będą one widoczne dla innych.NET Framework obiektów.
Aby właściwości i metody COM, należy je zadeklarować interfejsu klasy i oznaczyć je z DispId atrybutu i wprowadza je w życie w klasie.Kolejność, w której członkowie są zadeklarowane w interfejsie jest kolejność stosowaną dla COM vtable.
Aby zdarzenia z klasy, należy je zadeklarować interfejsu zdarzenia i oznaczyć je z DispId atrybut.Klasa nie powinny implementować interfejsu.
Klasy implementuje interfejs klasy; można go zaimplementować więcej niż jeden interfejs, ale pierwszego wykonania będą domyślnego interfejsu klasy.Wdrożenie metod i właściwości ujawniony dla modelu COM, w tym miejscu.One muszą być oznakowane publicznych i musi odpowiadać deklaracje w interfejsie klasa.Ponadto oświadczają zdarzenia wywoływane przez klasę, w tym miejscu.One muszą być oznakowane publicznych i musi odpowiadać deklaracjom interfejsu zdarzenia.
Przykład
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
{
}
}
Zobacz też
Informacje
Interoperacyjności (Podręcznik programowania C#)
Kompilacja strony, Project Designer (C#)