TypeDelegator.InvokeMember Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memanggil anggota yang ditentukan. Metode yang akan dipanggil harus dapat diakses dan memberikan kecocokan paling spesifik dengan daftar argumen yang ditentukan, di bawah batasan atribut binder dan pemanggilan yang ditentukan.
public:
override System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);
public override object? InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? namedParameters);
public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, namedParameters As String()) As Object
Parameter
- name
- String
Nama anggota yang akan dipanggil. Ini mungkin konstruktor, metode, properti, atau bidang. Jika string kosong ("") diteruskan, anggota default akan dipanggil.
- invokeAttr
- BindingFlags
Atribut pemanggilan. Ini harus menjadi salah satu dari berikut BindingFlags : , InvokeMethod, CreateInstance, Static, SetFieldGetField, GetProperty, atau SetProperty. Atribut pemanggilan yang sesuai harus ditentukan. Jika anggota statis akan dipanggil, Static bendera harus diatur.
- binder
- Binder
Objek yang memungkinkan pengikatan, paksaan jenis argumen, pemanggilan anggota, dan pengambilan MemberInfo objek melalui pantulan. Jika binder adalah null, pengikat default digunakan. Lihat Binder.
- target
- Object
Objek tempat memanggil anggota yang ditentukan.
- args
- Object[]
Array jenis Object yang berisi angka, urutan, dan jenis parameter anggota yang akan dipanggil. Jika args berisi yang tidak diinisialisasi Object, itu diperlakukan kosong, yang, dengan pengikat default, dapat dilebarkan menjadi 0, 0,0 atau string.
- modifiers
- ParameterModifier[]
Array jenis ParameterModifier yang panjangnya argssama dengan , dengan elemen yang mewakili atribut yang terkait dengan argumen anggota yang akan dipanggil. Parameter memiliki atribut yang terkait dengannya dalam tanda tangan anggota. Untuk ByRef, gunakan ParameterModifier.ByRef, dan untuk tidak ada, gunakan ParameterModifier.None. Pengikat default melakukan pencocokan yang tepat pada ini. Atribut seperti In dan InOut tidak digunakan dalam pengikatan, dan dapat dilihat menggunakan ParameterInfo.
- culture
- CultureInfo
Instans yang CultureInfo digunakan untuk mengatur koersi jenis. Ini diperlukan, misalnya, untuk mengonversi string yang mewakili 1000 menjadi Double nilai, karena 1000 diwakili secara berbeda oleh budaya yang berbeda. Jika culture adalah null, CultureInfo untuk utas CultureInfo saat ini digunakan.
- namedParameters
- String[]
Array string yang berisi nama parameter yang cocok, dimulai dari elemen nol, dengan args array . Tidak boleh ada lubang dalam array. Jika args.
Length lebih besar dari namedParameters.
Length, parameter yang tersisa diisi secara berurutan.
Mengembalikan
yang Object mewakili nilai yang dikembalikan dari anggota yang dipanggil.
Keterangan
Metode akan dipanggil jika kedua kondisi berikut ini benar:
Jumlah parameter dalam deklarasi metode sama dengan jumlah argumen dalam daftar argumen yang ditentukan (kecuali argumen default ditentukan pada anggota).
Jenis setiap argumen dapat dikonversi oleh pengikat ke jenis parameter .
Pengikat akan menemukan semua metode yang cocok. Metode ini ditemukan berdasarkan jenis pengikatan yang diminta (BindingFlags.MethodInvoke, BindingFlags.GetProperties, dan sebagainya). Kumpulan metode difilter berdasarkan nama, jumlah argumen, dan sekumpulan pengubah pencarian yang ditentukan dalam pengikat.
Setelah metode dipilih, metode akan dipanggil. Aksesibilitas diperiksa pada saat itu. Pencarian dapat mengontrol set metode mana yang dicari berdasarkan atribut aksesibilitas yang terkait dengan metode . Metode Binder.BindToMethod ini bertanggung jawab untuk memilih metode yang akan dipanggil. Pengikat default memilih kecocokan yang paling spesifik.
Catatan
Pembatasan akses diabaikan untuk kode yang sepenuhnya tepercaya. Artinya, konstruktor privat, metode, bidang, dan properti dapat diakses dan dipanggil menggunakan refleksi setiap kali kode sepenuhnya dipercaya.
Saat ini, InvokeMember melakukan semantik refleksi Microsoft .NET Framework untuk setiap jenis objek.
Jika anggota yang ditentukan berdasarkan nama adalah array dan BindingFlags.GetField bendera diatur pada invokeAttr, args array menentukan elemen yang nilainya akan dikembalikan. Misalnya, panggilan Type melalui objek t berikut mengembalikan nilai elemen pertama dari array string MyArray, yang merupakan anggota objek panggilan:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
Anda dapat menggunakan InvokeMember untuk mengatur satu atau beberapa elemen array anggota. Semua elemen diatur ke nilai yang sama. Array args harus diformat sebagai berikut:
{index1,
index2,, value}
Misalnya, untuk mengatur anggota pertama MyArray dari contoh sebelumnya, sintaksnya adalah sebagai berikut:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});