Örnek COM Sınıfı

Aşağıdaki kod, COM nesnesi olarak kullanıma sunmanız gereken bir sınıf örneğidir. Bu kodu projenize eklenen bir .cs dosyasına yerleştirdikten sonra, COM Birlikte Çalışma için Kaydet özelliğini True olarak ayarlayın. Daha fazla bilgi için bkz . Nasıl yapılır: Com Birlikte Çalışma için Bileşen Kaydetme.

C# nesneleriniN COM'a açıklanması için bir sınıf arabirimi, gerekirse "olay arabirimi" ve sınıfın kendisi bildirilmesi gerekir. Sınıf üyelerinin COM tarafından görülebilmesi için bu kurallara uyması gerekir:

  • Sınıfın genel olması gerekir.
  • Özellikler, yöntemler ve olaylar genel olmalıdır.
  • Özellikler ve yöntemler sınıf arabiriminde bildirilmelidir.
  • Olaylar olay arabiriminde bildirilmelidir.

Bu arabirimlerde bildirmediğiniz sınıftaki diğer genel üyeler COM tarafından görünmez, ancak diğer .NET nesneleri tarafından görülebilir. Özellikleri ve yöntemleri COM'a göstermek için, bunları sınıf arabiriminde bildirmeniz ve bir DispId öznitelikle işaretlemeniz ve bunları sınıfta uygulamanız gerekir. Arabirimdeki üyeleri bildirdiğiniz sıra, COM vtable için kullanılan sıradır. Sınıfınızdaki olayları kullanıma açmak için bunları olay arabiriminde bildirmeniz ve bir DispId öznitelikle işaretlemeniz gerekir. sınıfı bu arabirimi uygulamamalıdır.

sınıfı, sınıf arabirimini uygular; birden fazla arabirim uygulayabilir, ancak ilk uygulama varsayılan sınıf arabirimidir. BURADA COM'a sunulan yöntemleri ve özellikleri uygulayın. Bunların genel olması ve sınıf arabirimindeki bildirimlerle eşleşmesi gerekir. Ayrıca, sınıfı tarafından tetiklenen olayları burada bildirin. Bunların genel olması ve olaylar arabirimindeki bildirimlerle eşleşmesi gerekir.

Örnek

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
    {
    }
}

Ayrıca bkz.