Bagikan melalui


Refleksi dan .NET Native

Dalam .NET Framework, pengembangan terkelola mendukung metaprogram melalui API refleksi. Refleksi memungkinkan Anda memeriksa objek dalam aplikasi, memanggil metode pada objek yang ditemukan melalui inspeksi, menghasilkan jenis baru pada waktu proses, dan mendukung banyak skenario kode dinamis lainnya. Ini juga mendukung serialisasi dan deserialisasi, yang memungkinkan nilai bidang objek dipertahankan dan kemudian dipulihkan. Semua skenario ini memerlukan kompilator .NET Framework just-in-time (JIT) untuk menghasilkan kode asli berdasarkan metadata yang tersedia.

Runtime .NET Native tidak menyertakan kompilator JIT. Akibatnya, semua kode asli yang diperlukan harus dihasilkan terlebih dahulu. Sekumpulan heuristik digunakan untuk menentukan kode apa yang harus dihasilkan, tetapi heuristik ini tidak dapat mencakup semua kemungkinan skenario metaprogram. Oleh karena itu, Anda harus memberikan petunjuk untuk skenario metaprogram ini dengan menggunakan arahan runtime. Jika metadata atau kode implementasi yang diperlukan tidak tersedia saat runtime, aplikasi Anda akan menampilkan pengecualian MissingMetadataException, MissingRuntimeArtifactException, atau MissingInteropDataException . Tersedia dua pemecah masalah yang akan menghasilkan entri yang sesuai untuk file arahan runtime Anda yang menghilangkan pengecualian:

  • Pemecah masalah MissingMetadataException untuk jenis.

  • Pemecah masalah MissingMetadataException untuk metode.

Catatan

Untuk gambaran umum proses kompilasi .NET Native yang menyediakan latar belakang tentang mengapa file arahan runtime diperlukan, lihat .NET Native and Compilation.

Selain itu, .NET Native tidak memungkinkan Anda untuk mencerminkan anggota privat dari pustaka kelas .NET Framework. Misalnya, panggilan ke TypeInfo.DeclaredFields properti untuk mengambil bidang jenis pustaka kelas .NET Framework hanya mengembalikan bidang publik atau terproteksi.

Artikel berikut ini menyediakan dokumentasi konseptual dan referensi yang Anda butuhkan untuk mendukung refleksi dan serialisasi di aplikasi Anda:

Lihat juga