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.
Kelas di System.Reflection namespace, bersama dengan System.Type, memungkinkan Anda untuk mendapatkan informasi tentang assembly yang dimuat dan tipe yang didefinisikan di dalamnya, seperti kelas, antarmuka, dan jenis nilai (yaitu, struktur dan enumerasi). Anda juga dapat menggunakan refleksi untuk membuat instance tipe pada saat runtime, serta untuk memanggil dan mengaksesnya.
Rakitan berisi modul, modul berisi jenis, dan jenis berisi anggota. Refleksi menyediakan objek yang merangkum rakitan, modul, dan jenis. Anda dapat menggunakan pantulan untuk membuat instans jenis secara dinamis, mengikat jenis ke objek yang ada, atau mendapatkan jenis dari objek yang ada. Anda kemudian dapat memanggil metode jenis atau mengakses bidang dan propertinya. Penggunaan refleksi umum meliputi yang berikut ini:
- Gunakan Assembly untuk menentukan dan memuat rakitan, memuat modul yang tercantum dalam manifes perakitan, dan menemukan jenis dari rakitan ini dan membuat instansnya.
- Gunakan Module untuk menemukan informasi seperti rakitan yang berisi modul dan kelas dalam modul. Anda juga bisa mendapatkan semua metode global atau metode non-global spesifik lainnya yang ditentukan pada modul.
- Gunakan ConstructorInfo untuk menemukan informasi seperti nama, parameter, pengubah akses (seperti
publicatauprivate), dan detail implementasi (sepertiabstractatauvirtual) konstruktor. Gunakan metode GetConstructors atau GetConstructor dari Type untuk memanggil konstruktor tertentu. - Gunakan MethodInfo untuk menemukan informasi seperti nama, jenis pengembalian, parameter, pengubah akses, dan detail implementasi (seperti
abstractatauvirtual) dari metode. Gunakan metode GetMethods atau GetMethod dari Type untuk memanggil metode tertentu. - Gunakan FieldInfo untuk menemukan informasi seperti nama, pengubah akses, dan detail implementasi (seperti
static) bidang, dan untuk mendapatkan atau mengatur nilai bidang. - Gunakan EventInfo untuk menemukan informasi seperti nama, jenis data penanganan peristiwa, atribut kustom, jenis deklarasikan, dan jenis peristiwa yang tercermin, dan untuk menambahkan atau menghapus penanganan aktivitas.
- Gunakan PropertyInfo untuk menemukan informasi seperti nama, jenis data, jenis deklarasi, jenis pantulan, dan status properti baca saja atau tulis, serta untuk mendapatkan atau mengatur nilai properti.
- Gunakan ParameterInfo untuk menemukan informasi seperti nama parameter, jenis data, apakah parameter adalah parameter input atau output, dan posisi parameter dalam tanda tangan metode.
- Gunakan CustomAttributeData untuk menemukan informasi tentang atribut kustom saat Anda bekerja dalam MetadataLoadContext konteks atau hanya refleksi (.NET Framework). CustomAttributeData memungkinkan Anda memeriksa atribut tanpa membuat instansnya.
Kelas dari System.Reflection.Emit namespace menyediakan bentuk refleksi khusus yang memungkinkan Anda membuat tipe pada waktu proses berjalan.
Refleksi juga dapat digunakan untuk membuat penjelajah tipe, yang memungkinkan pengguna untuk memilih tipe dan kemudian melihat informasi tentang tipe tersebut.
Ada kegunaan lain untuk refleksi. Pengkompilasi untuk bahasa seperti JScript menggunakan refleksi untuk membuat tabel simbol. Kelas di System.Runtime.Serialization namespace menggunakan refleksi untuk mengakses data dan menentukan bidang mana yang akan dipertahankan. Kelas di System.Runtime.Remoting namespace menggunakan refleksi secara tidak langsung melalui serialisasi.
Jenis runtime dalam refleksi
Refleksi menyediakan kelas, seperti Type dan MethodInfo, untuk mewakili jenis, anggota, parameter, dan entitas kode lainnya. Namun, ketika Anda menggunakan refleksi, Anda tidak bekerja langsung dengan kelas-kelas ini, yang sebagian besar abstrak (MustInherit di Visual Basic). Sebagai gantinya, Anda bekerja dengan tipe yang disediakan oleh Common Language Runtime (CLR).
Misalnya, ketika Anda menggunakan operator C# typeof (GetType di Visual Basic) untuk mendapatkan Type objek, objeknya benar-benar adalah RuntimeType.
RuntimeType berasal dari Type dan menyediakan implementasi dari semua metode abstrak.
Kelas runtime ini adalah internal (Friend dalam Visual Basic). Mereka tidak didokumenkan secara terpisah dari kelas dasar mereka, karena perilakunya dijelaskan oleh dokumentasi kelas dasar.