ClassInterfaceAttribute Kelas

Definisi

Menunjukkan jenis antarmuka kelas yang akan dihasilkan untuk kelas yang diekspos ke COM, jika antarmuka dihasilkan sama sekali.

public ref class ClassInterfaceAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
public sealed class ClassInterfaceAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ClassInterfaceAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
type ClassInterfaceAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ClassInterfaceAttribute = class
    inherit Attribute
Public NotInheritable Class ClassInterfaceAttribute
Inherits Attribute
Warisan
ClassInterfaceAttribute
Atribut

Contoh

Contoh berikut menunjukkan cara menerapkan ClassInterfaceAttribute dengan ClassInterfaceType nilai AutoDispatch, yang menghasilkan IDispatch antarmuka untuk MyClass.

using namespace System::Runtime::InteropServices;

[ClassInterface(ClassInterfaceType::AutoDispatch)]
public ref class MyClass
{
public:
   MyClass(){}

};
using System.Runtime.InteropServices;

[ClassInterface(ClassInterfaceType.AutoDispatch)]
public class MyClass
{
   public MyClass() {}
}
Imports System.Runtime.InteropServices

<ClassInterface(ClassInterfaceType.AutoDispatch)> _
Public Class SampleClass    
    ' Insert class members here.
End Class

Keterangan

Anda dapat menerapkan atribut ini ke rakitan atau kelas.

Atribut ini mengontrol apakah Type Library Exporter (Tlbexp.exe) secara otomatis menghasilkan antarmuka kelas untuk kelas yang diatribusikan. Antarmuka kelas memiliki nama yang sama dengan kelas itu sendiri, tetapi namanya diawali dengan garis bawah. Saat diekspos, antarmuka kelas berisi semua public, non-anggota static kelas terkelola, termasuk anggota yang diwarisi dari kelas dasarnya. Kelas terkelola tidak dapat mengakses antarmuka kelas dan tidak perlu karena mereka dapat mengakses anggota kelas secara langsung. Tlbexp.exe menghasilkan pengidentifikasi antarmuka unik (IID) untuk antarmuka kelas.

Antarmuka kelas dapat berupa antarmuka ganda atau khusus pengiriman. Secara opsional, Anda dapat menekan pembuatan antarmuka kelas dan menyediakan antarmuka kustom sebagai gantinya. Anda mengekspos atau menekan antarmuka kelas dengan menentukan System.Runtime.InteropServices.ClassInterfaceType anggota enumerasi. Saat Anda menerapkan ClassInterfaceAttribute ke assembly, atribut berkaitan dengan semua kelas di assembly kecuali kelas individual mengambil alih pengaturan dengan atribut mereka sendiri.

Meskipun antarmuka kelas menghilangkan tugas mendefinisikan antarmuka secara eksplisit untuk setiap kelas, penggunaannya dalam aplikasi produksi sangat tidak disarankan. Antarmuka kelas ganda memungkinkan klien untuk mengikat ke tata letak antarmuka tertentu yang dapat berubah seiring berkembangnya kelas. Misalnya, pertimbangkan kelas terkelola yang mengekspos antarmuka kelas ke klien COM. Versi pertama kelas berisi metode North dan South. Klien yang tidak terkelola dapat mengikat antarmuka kelas, yang menyediakan North sebagai metode pertama dalam antarmuka dan metode South kelas sebagai metode kedua. Sekarang pertimbangkan versi kelas berikutnya, yang memiliki metode baru, East, dimasukkan antara metode North dan South. Klien tidak terkelola yang mencoba mengikat ke kelas baru melalui antarmuka kelas lama akhirnya memanggil metode East ketika mereka berniat untuk memanggil metode South, karena posisi metode dalam antarmuka telah berubah. Selain itu, setiap perubahan pada tata letak kelas dasar juga memengaruhi tata letak antarmuka kelas untuk semua kelas turunan. Klien terkelola, yang mengikat langsung ke kelas, tidak menunjukkan masalah penerapan versi yang sama. Untuk panduan khusus tentang menggunakan antarmuka kelas, lihat COM Callable Wrapper.

Tlbimp.exe (Type Library Importer) selalu berlaku untuk kelas ClassInterfaceType.None yang diimpor anggota enumerasi untuk menunjukkan bahwa kelas COM yang ada tidak pernah mengekspos antarmuka terkelola.

Konstruktor

ClassInterfaceAttribute(ClassInterfaceType)

Menginisialisasi instans ClassInterfaceAttribute baru kelas dengan anggota enumerasi yang ditentukan ClassInterfaceType .

ClassInterfaceAttribute(Int16)

Menginisialisasi instans ClassInterfaceAttribute baru kelas dengan nilai enumerasi yang ditentukan ClassInterfaceType .

Properti

TypeId

Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute.

(Diperoleh dari Attribute)
Value

ClassInterfaceType Mendapatkan nilai yang menjelaskan jenis antarmuka mana yang harus dihasilkan untuk kelas .

Metode

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari Attribute)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IsDefaultAttribute()

Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

(Diperoleh dari Attribute)
Match(Object)

Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari Attribute)

Berlaku untuk

Lihat juga