Udostępnij za pośrednictwem


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

Koncepcje

Podręcznik programowania C#