Kelas System.Reflection.Emit.MethodBuilder
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Kelas MethodBuilder ini digunakan untuk sepenuhnya menggambarkan metode dalam bahasa perantara umum (CIL), termasuk nama, atribut, tanda tangan, dan isi metode. Ini digunakan bersama dengan TypeBuilder kelas untuk membuat kelas pada waktu proses.
Anda dapat menggunakan pancaran pantulan untuk menentukan metode global dan menentukan metode sebagai anggota jenis. API yang menentukan metode mengembalikan MethodBuilder objek.
Metode global
Metode global didefinisikan dengan menggunakan ModuleBuilder.DefineGlobalMethod metode , yang mengembalikan MethodBuilder
objek.
Metode global harus statis. Jika modul dinamis berisi metode global, ModuleBuilder.CreateGlobalFunctions metode harus dipanggil sebelum mempertahankan modul dinamis atau rakitan dinamis yang berisi karena runtime bahasa umum menunda perbaikan modul dinamis sampai semua fungsi global telah ditentukan.
Metode asli global didefinisikan dengan menggunakan ModuleBuilder.DefinePInvokeMethod metode . Metode pemanggilan platform (PInvoke) tidak boleh dinyatakan abstrak atau virtual. Runtime mengatur MethodAttributes.PinvokeImpl atribut untuk metode pemanggilan platform.
Metode sebagai anggota jenis
Metode didefinisikan sebagai anggota jenis dengan menggunakan TypeBuilder.DefineMethod metode , yang mengembalikan MethodBuilder objek.
Metode DefineParameter ini digunakan untuk mengatur atribut nama dan parameter parameter, atau nilai yang dikembalikan. Objek ParameterBuilder yang dikembalikan oleh metode ini mewakili parameter atau nilai yang dikembalikan. Objek ParameterBuilder dapat digunakan untuk mengatur marshaling, untuk mengatur nilai konstanta, dan untuk menerapkan atribut kustom.
Atribut
Anggota MethodAttributes enumerasi menentukan karakter yang tepat dari metode dinamis:
- Metode statis ditentukan menggunakan MethodAttributes.Static atribut .
- Metode akhir (metode yang tidak dapat ditimpa) ditentukan menggunakan MethodAttributes.Final atribut .
- Metode virtual ditentukan menggunakan MethodAttributes.Virtual atribut .
- Metode abstrak ditentukan menggunakan MethodAttributes.Abstract atribut .
- Beberapa atribut menentukan visibilitas metode. Lihat deskripsi MethodAttributes enumerasi.
- Metode yang menerapkan operator yang kelebihan beban harus mengatur MethodAttributes.SpecialName atribut .
- Finalizer harus mengatur MethodAttributes.SpecialName atribut .
Masalah umum
- Meskipun MethodBuilder berasal dari MethodInfo, beberapa metode abstrak yang ditentukan dalam MethodInfo kelas tidak sepenuhnya diimplementasikan dalam MethodBuilder. Metode ini MethodBuilder melemparkan NotSupportedException. Misalnya MethodBuilder.Invoke metode tidak sepenuhnya diimplementasikan. Anda dapat merefleksikan metode ini dengan mengambil jenis penutup menggunakan Type.GetType metode atau Assembly.GetType .
- Pengubah kustom didukung.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk