Bagikan melalui


TypeDelegator.InvokeMember Metode

Definisi

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"});  

Berlaku untuk

Lihat juga