Jenis interop yang disematkan dan kesetaraan jenis

Semenjak .NET Framework 4, runtime bahasa umum mendukung informasi jenis penyematan untuk jenis COM secara langsung ke rakitan terkelola, alih-alih memerlukan rakitan terkelola untuk mendapatkan informasi jenis untuk jenis COM dari rakitan interop. Karena informasi jenis yang disematkan hanya mencakup jenis dan anggota yang benar-benar digunakan oleh rakitan terkelola, dua rakitan terkelola mungkin memiliki pandangan yang sangat berbeda dari jenis COM yang sama. Setiap rakitan terkelola memiliki objek Type yang berbeda untuk mewakili pandangannya tentang jenis COM. Runtime bahasa umum mendukung kesetaraan jenis antara tampilan yang berbeda ini untuk antarmuka, struktur, enumerasi, dan delegasi.

Kesetaraan jenis berarti objek COM yang diteruskan dari satu rakitan terkelola ke rakitan lain dapat dilemparkan ke jenis terkelola yang sesuai di rakitan penerima.

Catatan

Kesetaraan jenis dan jenis interop yang disematkan menyederhanakan penyebaran aplikasi dan add-in yang menggunakan komponen COM, karena tidak perlu menyebarkan rakitan interop dengan aplikasi. Pengembang komponen COM bersama masih harus membuat rakitan interop utama (PIA) jika mereka ingin komponennya digunakan oleh versi .NET Framework yang lebih lama.

Kesetaraan jenis

Kesetaraan jenis COM didukung untuk antarmuka, struktur, enumerasi, dan delegasi. Jenis COM memenuhi syarat sebagai setara jika semua hal berikut ini adalah true:

  • Jenis keduanya adalah antarmuka, atau keduanya struktur, atau keduanya enumerasi, atau keduanya delegasi.

  • Jenis-jenis tersebut memiliki identitas yang sama, seperti yang dijelaskan pada bagian selanjutnya.

  • Kedua jenis memenuhi syarat untuk kesetaraan jenis, seperti yang dijelaskan di bagian Menandai jenis COM untuk kesetaraan jenis.

Identitas jenis

Dua jenis ditentukan untuk memiliki identitas yang sama ketika cakupan dan identitasnya cocok, dengan kata lain jika masing-masing memiliki atribut TypeIdentifierAttribute, dan kedua atribut tersebut memiliki properti Scope dan Identifier yang cocok . Perbandingan untuk Scope tidak peka huruf besar/kecil.

Jika suatu jenis tidak memiliki atribut TypeIdentifierAttribute, atau jika memiliki atribut TypeIdentifierAttribute yang tidak menentukan cakupan dan pengenal, jenis tersebut masih dapat dipertimbangkan untuk kesetaraan sebagai berikut:

Menandai jenis COM untuk kesetaraan jenis

Anda dapat menandai suatu jenis sebagai memenuhi syarat untuk kesetaraan jenis dengan dua cara:

Lihat juga