Bagikan melalui


IReflect.InvokeMember Metode

Definisi

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, pdRetvalpdOptional, 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.

Berlaku untuk

Lihat juga