IReflect.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 tertentu.
public:
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 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 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);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public 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 ditemukan.
- invokeAttr
- BindingFlags
Salah BindingFlags satu atribut pemanggilan. Parameternya invokeAttr
mungkin konstruktor, metode, properti, atau bidang. Atribut pemanggilan yang sesuai harus ditentukan. Panggil anggota default kelas dengan meneruskan string kosong ("") sebagai nama anggota.
- binder
- Binder
Salah BindingFlags satu bendera bit. BinderMengimplementasikan , berisi properti yang terkait dengan metode ini.
- target
- Object
Objek tempat memanggil anggota yang ditentukan. Parameter ini diabaikan untuk anggota statis.
- args
- Object[]
Array objek yang berisi angka, urutan, dan jenis parameter anggota yang akan dipanggil. Ini adalah array kosong jika tidak ada parameter.
- modifiers
- ParameterModifier[]
Array ParameterModifier objek. Array ini memiliki panjang args
yang sama dengan parameter, mewakili atribut argumen anggota yang dipanggil dalam metadata. Parameter dapat memiliki atribut berikut: pdIn
, , pdOut
, pdRetval
pdOptional
, dan pdHasDefault
. Ini masing-masing mewakili [In], [Out], [retval], [opsional], dan parameter default. Atribut ini digunakan oleh berbagai layanan interoperabilitas.
- culture
- CultureInfo
Instans yang CultureInfo digunakan untuk mengatur koersi jenis. Misalnya, culture
mengonversi string yang mewakili 1000 menjadi Double nilai, karena 1000 diwakili secara berbeda oleh budaya yang berbeda. Jika parameter ini adalah null
, CultureInfo untuk utas saat ini digunakan.
- namedParameters
- String[]
Array string parameter.
Mengembalikan
Anggota yang ditentukan.
Pengecualian
Lebih dari satu argumen ditentukan untuk bidang set
.
Bidang atau properti tidak dapat ditemukan.
Metode tidak dapat ditemukan.
Anggota privat dipanggil tanpa perlu ReflectionPermission.
Contoh
Contoh berikut mendapatkan nilai Now properti .
#using <System.DLL>
using namespace System;
using namespace System::Reflection;
#define NULL 0
void main()
{
Type^ tDate = Type::GetType( L"System.DateTime" );
Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
Console::WriteLine( result->ToString() );
}
using System;
using System.Reflection;
public class MainClass
{
public static void Main(string[] args)
{
Type tDate = typeof(System.DateTime);
Object result = tDate.InvokeMember("Now",
BindingFlags.GetProperty, null, null, new Object[0]);
Console.WriteLine(result.ToString());
}
}
Imports System.Reflection
Public Class MainClass
Public Overloads Shared Sub Main(ByVal args() As String)
Dim tDate As Type = GetType(System.DateTime)
Dim result As [Object] = tDate.InvokeMember("Now", _
BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
Console.WriteLine(result.ToString())
End Sub
End Class
Keterangan
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.
Metode dipanggil jika jumlah parameter dalam deklarasi metode sama dengan jumlah argumen dalam daftar argumen yang ditentukan, dan jenis setiap argumen dapat dikonversi oleh pengikat ke jenis parameter.
Catatan
Array pengubah parameter yang diteruskan ke InvokeMember metode harus berisi pengubah parameter tunggal. Hanya pengubah parameter pertama yang dipertimbangkan saat menentukan argumen mana yang perlu diteruskan oleh referensi saat diekspos ke COM.
Pengikat menemukan semua metode yang cocok, sesuai dengan jenis pengikatan yang diminta (BindingFlags.InvokeMethod, GetProperties, dan sebagainya). Kumpulan metode difilter berdasarkan nama, jumlah argumen, dan sekumpulan pengubah pencarian yang ditentukan dalam pengikat. Setelah metode dipilih, metode dipanggil, dan aksesibilitas diperiksa pada saat itu. Pencarian dapat mengontrol set metode mana yang dicari berdasarkan atribut aksesibilitas yang terkait dengan metode . BindToMethod memilih metode yang akan dipanggil. Pengikat default memilih kecocokan yang paling spesifik.
Pembatasan akses diabaikan untuk kode yang sepenuhnya tepercaya. Artinya, konstruktor privat, metode, bidang, dan properti dapat diakses dan dipanggil melalui refleksi setiap kali kode sepenuhnya dipercaya.