Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Atribut InternalsVisibleToAttribute menentukan bahwa jenis yang biasanya hanya terlihat dalam rakitan saat ini terlihat oleh rakitan tertentu.
Seharusnya, jenis dan anggota dengan internal cakupan dalam C# atau Friend cakupan di Visual Basic hanya terlihat dalam assembly tempat mereka didefinisikan. Jenis dan anggota dengan cakupan protected internal (cakupan Protected Friend di Visual Basic) hanya terlihat di rakitan mereka sendiri atau ke tipe yang berasal dari kelas yang menaunginya. Jenis dan anggota dengan private protected cakupan (Private Protected cakupan dalam Visual Basic) terlihat di dalam kelas yang berisi atau dalam jenis yang diturunkan dari kelas yang berisi dalam rakitan saat ini
Atribut InternalsVisibleToAttribute membuat jenis dan anggota ini juga terlihat oleh jenis dalam rakitan tertentu, yang dikenal sebagai rakitan teman. Ini hanya berlaku untuk anggota internal (Friend di Visual Basic), anggota protected internal(Protected Friend di Visual Basic), dan anggota private protected (Private Protected di Visual Basic), tetapi tidak untuk anggota private.
Nota
Dalam kasus anggota private protected (Private Protected dalam Visual Basic), atribut InternalsVisibleToAttribute hanya memperluas aksesibilitas ke tipe yang diturunkan dari kelas yang mengandung anggota.
Atribut diterapkan pada tingkat perakitan. Ini berarti bahwa file tersebut dapat disertakan di awal file kode sumber, atau dapat disertakan dalam file AssemblyInfo dalam proyek Visual Studio. Anda dapat menggunakan atribut untuk mendefinisikan satu assembly teman yang dapat mengakses tipe dan anggota internal dari assembly saat ini. Anda dapat menentukan beberapa rakitan teman dengan dua cara. Mereka dapat muncul sebagai atribut tingkat rakitan individual, seperti yang diilustrasikan contoh berikut.
[assembly:InternalsVisibleTo("Friend1a")]
[assembly:InternalsVisibleTo("Friend1b")]
<assembly:InternalsVisibleTo("Friend1a")>
<assembly:InternalsVisibleTo("Friend1b")>
Mereka juga dapat muncul dengan tag InternalsVisibleToAttribute terpisah tetapi satu kata kunci assembly, seperti yang diilustrasikan dalam contoh berikut.
[assembly:InternalsVisibleTo("Friend2a"),
InternalsVisibleTo("Friend2b")]
<Assembly:InternalsVisibleTo("Friend2a"), _
Assembly:InternalsVisibleTo("Friend2b")>
Perakitan sahabat diidentifikasi oleh konstruktur InternalsVisibleToAttribute. Rakitan saat ini dan rakitan mitra harus tidak ditandatangani, atau kedua rakitan harus ditandatangani dengan nama yang kuat.
Jika kedua rakitan tidak ditandatangani, argumen assemblyName terdiri dari nama rakitan teman, yang ditentukan tanpa jalur direktori atau ekstensi nama file.
Jika kedua rakitan ditandatangani dengan nama yang kuat, argumen untuk konstruktor InternalsVisibleToAttribute harus terdiri dari nama rakitan tanpa jalur direktori atau ekstensi nama file, serta kunci publik lengkap (bukan token kunci publiknya). Untuk mendapatkan kunci publik lengkap dari assembly bernama kuat, periksa bagian Dapatkan kunci publik lengkap di artikel ini. Untuk informasi selengkapnya tentang menggunakan InternalsVisibleToAttribute dengan rakitan dengan nama kuat, lihat InternalsVisibleToAttribute konstruktor.
Jangan sertakan nilai untuk bidang CultureInfo, Version, atau ProcessorArchitecture dalam argumen; pengkompilasi Visual Basic, C#, dan C++ menemukan ini sebagai kesalahan pengkompilasi. Jika Anda menggunakan pengkompilasi yang tidak memperlakukannya sebagai kesalahan (seperti Perakit IL (ILAsm.exe)) dan rakitan diberi nama kuat, MethodAccessException pengecualian akan muncul ketika pertama kali rakitan teman yang ditentukan mengakses rakitan yang berisi InternalsVisibleToAttribute atribut.
Untuk informasi selengkapnya tentang cara menggunakan atribut ini, lihat rakitan Teman dan rakitan teman C++.
Dapatkan kunci publik lengkap
Anda dapat menggunakan Alat Nama Kuat (Sn.exe) untuk mengambil kunci publik lengkap dari file kunci bernama kuat (.snk). Untuk melakukan ini, Anda melakukan langkah-langkah berikut:
Ekstrak kunci publik dari file kunci dengan nama kuat ke dalam file terpisah.
Sn -p <snk_file> <outfile>Tampilkan kunci publik lengkap ke konsol:
Sn -tp <outfile>Salin dan tempel nilai kunci publik lengkap ke dalam kode sumber Anda.
Kompilasi assembly teman dengan C#
Jika Anda menggunakan compiler C# untuk mengkompilasi assembly teman, Anda harus secara eksplisit menentukan nama file output (.exe atau .dll) dengan menggunakan opsi compiler /out. Ini diperlukan karena pengkompilasi belum menghasilkan nama untuk rakitan yang dibangunnya pada saat mengikat referensi eksternal. Opsi pengkompilasi /out bersifat opsional untuk pengkompilasi Visual Basic, dan opsi pengkompilasi -out atau -o yang sesuai tidak boleh digunakan saat mengkompilasi rakitan teman dengan pengkompilasi F#.
Kompilasi perakitan sahabat menggunakan C++
Di C++, untuk membuat anggota internal diaktifkan oleh atribut InternalsVisibleToAttribute yang dapat diakses oleh assemblies teman, Anda harus menggunakan atribut as_friend dalam arahan di C++. Untuk informasi selengkapnya, lihat Rakitan Teman (C++).