Baca dalam bahasa Inggris

Bagikan melalui


ClassInterfaceType Enum

Definisi

Mengidentifikasi jenis antarmuka kelas yang dihasilkan untuk kelas.

C#
public enum ClassInterfaceType
C#
[System.Serializable]
public enum ClassInterfaceType
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ClassInterfaceType
Warisan
ClassInterfaceType
Atribut

Bidang

Nama Nilai Deskripsi
AutoDispatch 1

Menunjukkan bahwa kelas hanya mendukung pengikatan terlambat untuk klien COM. dispinterface untuk kelas secara otomatis diekspos ke klien COM berdasarkan permintaan. Pustaka jenis yang dihasilkan oleh Tlbexp.exe (Pengekspor Pustaka Jenis) tidak berisi informasi jenis untuk dispinterface mencegah klien membuat cache DISPID antarmuka. dispinterface tidak menunjukkan masalah penerapan versi yang dijelaskan karena ClassInterfaceAttribute klien hanya dapat terlambat mengikat antarmuka.

Ini adalah pengaturan default untuk ClassInterfaceAttribute.

AutoDual 2

Menunjukkan bahwa antarmuka kelas ganda secara otomatis dihasilkan untuk kelas dan diekspos ke COM. Informasi jenis diproduksi untuk antarmuka kelas dan diterbitkan di pustaka jenis. Penggunaan AutoDual sangat tidak disarankan karena batasan penerapan versi yang dijelaskan dalam ClassInterfaceAttribute.

None 0

Menunjukkan bahwa tidak ada antarmuka kelas yang dihasilkan untuk kelas . Jika tidak ada antarmuka yang diimplementasikan secara eksplisit, kelas hanya dapat menyediakan akses terlambat terikat melalui IDispatch antarmuka. Ini adalah pengaturan yang direkomendasikan untuk ClassInterfaceAttribute. Menggunakan ClassInterfaceType.None adalah satu-satunya cara untuk mengekspos fungsionalitas melalui antarmuka yang diterapkan secara eksplisit oleh kelas.

Tlbexp.exe (Pengekspor Pustaka Jenis) mengekspos antarmuka publik pertama yang terlihat COM yang diimplementasikan oleh kelas sebagai antarmuka default coclass. Di .NET Framework 2.0 dan versi yang lebih baru, Anda dapat menentukan antarmuka default yang diekspos ke COM dengan menggunakan ComDefaultInterfaceAttribute atribut . Jika kelas tidak mengimplementasikan antarmuka, antarmuka publik pertama yang terlihat COM yang diimplementasikan oleh kelas dasar menjadi antarmuka default (dimulai dengan kelas dasar turunan terbaru dan bekerja mundur). Tlbexp.exe diekspos _Object sebagai antarmuka default jika kelas maupun kelas dasarnya tidak mengimplementasikan antarmuka.

Contoh

Contoh ini menunjukkan cara menerapkan ke ClassInterfaceAttribute jenis, mengatur ClassInterfaceType. Kelas yang ditentukan dengan cara ini dapat digunakan dari COM yang tidak dikelola.

C#
using System;
using System.Runtime.InteropServices;

// Have the CLR expose a class interface (derived from IDispatch) for this type.
// COM clients can call the  members of this class using the Invoke method from the IDispatch interface.
[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class AClassUsableViaCOM
{
    public AClassUsableViaCOM() { }

    public Int32 Add(Int32 x, Int32 y) { return x + y; }
}

// The CLR does not expose a class interface for this type.
// COM clients can call the members of this class using the methods from the IComparable interface.
[ClassInterface(ClassInterfaceType.None)]
public class AnotherClassUsableViaCOM : IComparable
{
    public AnotherClassUsableViaCOM() { }

    Int32 IComparable.CompareTo(Object o) { return 0; }
}

Keterangan

Enumerasi ini digunakan bersama dengan ClassInterfaceAttribute atribut .

Berlaku untuk

Produk Versi
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Lihat juga