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
, SetField
GetField
, 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 args
sama 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"});