Type.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 dari saat ini Type.
Overload
InvokeMember(String, BindingFlags, Binder, Object, Object[]) |
Memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan cocok dengan daftar argumen yang ditentukan. |
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) |
Memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan mencocokkan daftar argumen dan budaya yang ditentukan. |
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) |
Saat ditimpa di kelas turunan, memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan mencocokkan daftar argumen, pengubah, dan budaya yang ditentukan. |
InvokeMember(String, BindingFlags, Binder, Object, Object[])
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan cocok dengan daftar argumen yang ditentukan.
public:
System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args);
public:
virtual System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args);
public object? InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args);
public object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args);
member this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] -> obj
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] -> obj
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] -> obj
Public Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object()) As Object
Parameter
- name
- String
String yang berisi nama konstruktor, metode, properti, atau anggota bidang untuk dipanggil.
-atau-
String kosong ("") untuk memanggil anggota default.
-atau-
Untuk IDispatch
anggota, string yang mewakili DispID, misalnya "[DispID=3]".
- invokeAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan. Aksesnya bisa menjadi salah BindingFlags
satu dari seperti , , NonPublic
, Private
InvokeMethod
, GetField
, dan sebagainyaPublic
. Tipe pencarian tidak perlu ditentukan. Jika jenis pencarian dihilangkan, BindingFlags.Public
| | BindingFlags.Instance
BindingFlags.Static
digunakan.
- binder
- Binder
Objek yang mendefinisikan sekumpulan properti dan memungkinkan pengikatan, yang dapat melibatkan pemilihan metode yang kelebihan beban, paksaan jenis argumen, dan pemanggilan anggota melalui refleksi.
-atau-
Referensi null (Nothing
di Visual Basic), untuk menggunakan DefaultBinder. Perhatikan bahwa secara eksplisit mendefinisikan Binder objek mungkin diperlukan untuk berhasil memanggil metode kelebihan beban dengan argumen variabel.
- target
- Object
Objek tempat memanggil anggota yang ditentukan.
- args
- Object[]
Array yang berisi argumen untuk diteruskan ke anggota untuk dipanggil.
Mengembalikan
Objek yang mewakili nilai pengembalian anggota yang dipanggil.
Penerapan
Pengecualian
invokeAttr
tidak berisi CreateInstance
dan name
adalah null
.
invokeAttr
bukan atribut yang valid BindingFlags .
-atau-
invokeAttr
tidak berisi salah satu bendera pengikatan berikut: InvokeMethod
, , CreateInstance
, GetField
SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi CreateInstance
dikombinasikan dengan InvokeMethod
, GetField
, SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi dan GetField
SetField
.
-atau-
invokeAttr
berisi dan GetProperty
SetProperty
.
-atau-
invokeAttr
berisi InvokeMethod
dikombinasikan dengan SetField
atau SetProperty
.
-atau-
invokeAttr
berisi SetField
dan args
memiliki lebih dari satu elemen.
-atau-
Metode ini dipanggil pada objek COM dan salah satu bendera pengikatan berikut tidak diteruskan di: BindingFlags.InvokeMethod
, , BindingFlags.GetProperty
, BindingFlags.SetProperty
BindingFlags.PutDispProperty
, atau BindingFlags.PutRefDispProperty
.
-atau-
Salah satu array parameter bernama berisi string yaitu null
.
Anggota yang ditentukan adalah penginisialisasi kelas.
Bidang atau properti tidak dapat ditemukan.
Tidak ada metode yang dapat ditemukan yang cocok dengan argumen di args
.
-atau-
Objek saat ini Type mewakili jenis yang berisi parameter jenis terbuka, yaitu, ContainsGenericParameters mengembalikan true
.
Anggota yang ditentukan tidak dapat dipanggil pada target
.
Lebih dari satu metode cocok dengan kriteria pengikatan.
.NET Compact Framework saat ini tidak mendukung metode ini.
Metode yang diwakili oleh name
memiliki satu atau beberapa parameter jenis generik yang tidak ditentukan. Artinya, properti metode ContainsGenericParameters mengembalikan true
.
Contoh
Contoh berikut menggunakan InvokeMember
untuk mengakses anggota jenis.
using namespace System;
using namespace System::Reflection;
// This sample class has a field, constructor, method, and property.
ref class MyType
{
private:
Int32 myField;
public:
MyType( interior_ptr<Int32> x )
{
*x *= 5;
}
virtual String^ ToString() override
{
return myField.ToString();
}
property Int32 MyProp
{
Int32 get()
{
return myField;
}
void set( Int32 value )
{
if ( value < 1 )
throw gcnew ArgumentOutOfRangeException( "value",value,"value must be > 0" );
myField = value;
}
}
};
int main()
{
Type^ t = MyType::typeid;
// Create an instance of a type.
array<Object^>^args = {8};
Console::WriteLine( "The value of x before the constructor is called is {0}.", args[ 0 ] );
Object^ obj = t->InvokeMember( nullptr, static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::CreateInstance), nullptr, nullptr, args );
Console::WriteLine( "Type: {0}", obj->GetType() );
Console::WriteLine( "The value of x after the constructor returns is {0}.", args[ 0 ] );
// Read and write to a field.
array<Object^>^obj5 = {5};
t->InvokeMember( "myField", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetField), nullptr, obj, obj5 );
Int32 v = safe_cast<Int32>(t->InvokeMember( "myField", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::GetField), nullptr, obj, nullptr ));
Console::WriteLine( "myField: {0}", v );
// Call a method.
String^ s = safe_cast<String^>(t->InvokeMember( "ToString", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::InvokeMethod), nullptr, obj, nullptr ));
Console::WriteLine( "ToString: {0}", s );
// Read and write a property. First, attempt to assign an
// invalid value; then assign a valid value; finally, get
// the value.
try
{
// Assign the value zero to MyProp. The Property Set
// throws an exception, because zero is an invalid value.
// InvokeMember catches the exception, and throws
// TargetInvocationException. To discover the real cause
// you must catch TargetInvocationException and examine
// the inner exception.
array<Object^>^obj0 = {(int^)0};
t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetProperty), nullptr, obj, obj0 );
}
catch ( TargetInvocationException^ e )
{
// If the property assignment failed for some unexpected
// reason, rethrow the TargetInvocationException.
if ( e->InnerException->GetType() != ArgumentOutOfRangeException::typeid )
throw;
Console::WriteLine( "An invalid value was assigned to MyProp." );
}
array<Object^>^obj2 = {2};
t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::SetProperty), nullptr, obj, obj2 );
v = safe_cast<Int32>(t->InvokeMember( "MyProp", static_cast<BindingFlags>(BindingFlags::DeclaredOnly | BindingFlags::Public | BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::GetProperty), nullptr, obj, nullptr ));
Console::WriteLine( "MyProp: {0}", v );
}
using System;
using System.Reflection;
// This sample class has a field, constructor, method, and property.
class MyType
{
Int32 myField;
public MyType(ref Int32 x) {x *= 5;}
public override String ToString() {return myField.ToString();}
public Int32 MyProp
{
get {return myField;}
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("value", value, "value must be > 0");
myField = value;
}
}
}
class MyApp
{
static void Main()
{
Type t = typeof(MyType);
// Create an instance of a type.
Object[] args = new Object[] {8};
Console.WriteLine("The value of x before the constructor is called is {0}.", args[0]);
Object obj = t.InvokeMember(null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args);
Console.WriteLine("Type: " + obj.GetType().ToString());
Console.WriteLine("The value of x after the constructor returns is {0}.", args[0]);
// Read and write to a field.
t.InvokeMember("myField",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetField, null, obj, new Object[] {5});
Int32 v = (Int32) t.InvokeMember("myField",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetField, null, obj, null);
Console.WriteLine("myField: " + v);
// Call a method.
String s = (String) t.InvokeMember("ToString",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.InvokeMethod, null, obj, null);
Console.WriteLine("ToString: " + s);
// Read and write a property. First, attempt to assign an
// invalid value; then assign a valid value; finally, get
// the value.
try
{
// Assign the value zero to MyProp. The Property Set
// throws an exception, because zero is an invalid value.
// InvokeMember catches the exception, and throws
// TargetInvocationException. To discover the real cause
// you must catch TargetInvocationException and examine
// the inner exception.
t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, obj, new Object[] {0});
}
catch (TargetInvocationException e)
{
// If the property assignment failed for some unexpected
// reason, rethrow the TargetInvocationException.
if (e.InnerException.GetType() !=
typeof(ArgumentOutOfRangeException))
throw;
Console.WriteLine("An invalid value was assigned to MyProp.");
}
t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, obj, new Object[] {2});
v = (Int32) t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, obj, null);
Console.WriteLine("MyProp: " + v);
}
}
open System
open System.Reflection
// This sample class has a field, constructor, method, and property.
type MyType() =
let mutable myField = 0
member _.MyType(x: int byref) =
x <- x * 5
override _.ToString() =
string myField
member _.MyProp
with get () = myField
and set value =
if value < 1 then
raise (ArgumentOutOfRangeException("value", value, "value must be > 0"))
myField <- value
let t = typeof<MyType>
// Create an instance of a type.
let args = Array.zeroCreate<obj> 8
printfn $"The value of x before the constructor is called is {args[0]}."
let obj = t.InvokeMember(null,
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.CreateInstance, null, null, args)
printfn $"Type: {obj.GetType()}"
printfn $"The value of x after the constructor returns is {args[0]}."
// Read and write to a field.
t.InvokeMember("myField",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.SetField, null, obj, Array.zeroCreate<obj> 5) |> ignore
let v = t.InvokeMember("myField",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.GetField, null, obj, null) :?> int
printfn $"myField: {v}"
// Call a method.
let s = t.InvokeMember("ToString",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.InvokeMethod, null, obj, null) :?> string
printfn $"ToString: {s}"
// Read and write a property. First, attempt to assign an
// invalid value then assign a valid value finally, get
// the value.
try
// Assign the value zero to MyProp. The Property Set
// throws an exception, because zero is an invalid value.
// InvokeMember catches the exception, and throws
// TargetInvocationException. To discover the real cause
// you must catch TargetInvocationException and examine
// the inner exception.
t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.SetProperty, null, obj, Array.zeroCreate<obj> 0) |> ignore
with :? TargetInvocationException as e ->
// If the property assignment failed for some unexpected
// reason, rethrow the TargetInvocationException.
if e.InnerException.GetType() <> typeof<ArgumentOutOfRangeException> then
reraise ()
printfn "An invalid value was assigned to MyProp."
t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.SetProperty, null, obj, Array.zeroCreate<obj> 2) |> ignore
let v2 = t.InvokeMember("MyProp",
BindingFlags.DeclaredOnly |||
BindingFlags.Public ||| BindingFlags.NonPublic |||
BindingFlags.Instance ||| BindingFlags.GetProperty, null, obj, null)
printfn $"MyProp: {v2}"
Imports System.Reflection
' This sample class has a field, constructor, method, and property.
Class MyType
Private myField As Int32
Public Sub New(ByRef x As Int32)
x *= 5
End Sub
Public Overrides Function ToString() As [String]
Return myField.ToString()
End Function 'ToString
Public Property MyProp() As Int32
Get
Return myField
End Get
Set(ByVal Value As Int32)
If Value < 1 Then
Throw New ArgumentOutOfRangeException("value", Value, "value must be > 0")
End If
myField = Value
End Set
End Property
End Class
Class MyApp
Shared Sub Main()
Dim t As Type = GetType(MyType)
' Create an instance of a type.
Dim args() As [Object] = {8}
Console.WriteLine("The value of x before the constructor is called is {0}.", args(0))
Dim obj As [Object] = t.InvokeMember(Nothing, BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.CreateInstance, Nothing, Nothing, args)
Console.WriteLine("Type: {0}", obj.GetType().ToString())
Console.WriteLine("The value of x after the constructor returns is {0}.", args(0))
' Read and write to a field.
t.InvokeMember("myField", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetField, Nothing, obj, New [Object]() {5})
Dim v As Int32 = CType(t.InvokeMember("myField", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.GetField, Nothing, obj, Nothing), Int32)
Console.WriteLine("myField: {0}", v)
' Call a method.
Dim s As [String] = CType(t.InvokeMember("ToString", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod, Nothing, obj, Nothing), [String])
Console.WriteLine("ToString: {0}", s)
' Read and write a property. First, attempt to assign an
' invalid value; then assign a valid value; finally, get
' the value.
Try
' Assign the value zero to MyProp. The Property Set
' throws an exception, because zero is an invalid value.
' InvokeMember catches the exception, and throws
' TargetInvocationException. To discover the real cause
' you must catch TargetInvocationException and examine
' the inner exception.
t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, Nothing, obj, New [Object]() {0})
Catch e As TargetInvocationException
' If the property assignment failed for some unexpected
' reason, rethrow the TargetInvocationException.
If Not e.InnerException.GetType() Is GetType(ArgumentOutOfRangeException) Then
Throw
End If
Console.WriteLine("An invalid value was assigned to MyProp.")
End Try
t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, Nothing, obj, New [Object]() {2})
v = CType(t.InvokeMember("MyProp", BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.GetProperty, Nothing, obj, Nothing), Int32)
Console.WriteLine("MyProp: {0}", v)
End Sub
End Class
Keterangan
Catatan
Anda tidak dapat menggunakan InvokeMember untuk memanggil metode generik.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Tentukan
BindingFlags.Public
untuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublic
untuk menyertakan anggota non-publik (yaitu, anggota privat dan terproteksi) dalam pencarian.Tentukan
BindingFlags.FlattenHierarchy
untuk menyertakan anggota statis ke hierarki.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
BindingFlags.IgnoreCase
untuk mengabaikan kasusname
.BindingFlags.DeclaredOnly
untuk mencari hanya anggota yang dideklarasikan pada Type, bukan anggota yang hanya diwarisi.
Bendera pemanggilan berikut BindingFlags dapat digunakan untuk menunjukkan tindakan apa yang harus diambil dengan anggota:
CreateInstance
untuk memanggil konstruktor.name
diabaikan. Tidak valid dengan bendera pemanggilan lainnya.InvokeMethod
untuk memanggil metode, tetapi bukan konstruktor atau penginisialisasi jenis. Tidak valid denganSetField
atauSetProperty
. JikaInvokeMethod
ditentukan dengan sendirinya,BindingFlags.Public
,BindingFlags.Instance
, danBindingFlags.Static
secara otomatis disertakan.GetField
untuk mendapatkan nilai bidang. Tidak valid denganSetField
.SetField
untuk mengatur nilai bidang. Tidak valid denganGetField
.GetProperty
untuk mendapatkan properti. Tidak valid denganSetProperty
.SetProperty
untuk mengatur properti. Tidak valid denganGetProperty
.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Metode akan dipanggil jika kedua kondisi berikut ini benar:
Jumlah parameter dalam deklarasi metode sama dengan jumlah argumen dalam
args
array (kecuali argumen default ditentukan pada anggota danBindingFlags.OptionalParamBinding
ditentukan).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 nilai InvokeMethod
, , GetProperty
dan sebagainya). Kumpulan metode difilter berdasarkan nama, jumlah argumen, dan sekumpulan pengubah pencarian yang ditentukan dalam pengikat.
Setelah metode dipilih, metode dipanggil. Aksesibilitas diperiksa pada saat itu. Pencarian dapat mengontrol set metode mana yang dicari berdasarkan atribut aksesibilitas yang terkait dengan metode . Metode Binder.BindToMethodBinder kelas bertanggung jawab untuk 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 setiap System.Reflection kali kode sepenuhnya dipercaya.
Anda bisa menggunakan Type.InvokeMember
untuk mengatur bidang ke nilai tertentu dengan menentukan BindingFlags.SetField. Misalnya, jika Anda ingin mengatur bidang instans publik bernama F pada kelas C, dan F adalah String
, Anda dapat menggunakan kode seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"});
Jika F adalah String[]
, Anda dapat menggunakan kode seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}});
yang akan menginisialisasi bidang F ke array baru ini. Anda juga dapat menggunakan Type.InvokeMember
untuk mengatur posisi dalam array dengan menyediakan indeks nilai lalu nilai berikutnya dengan menggunakan kode seperti berikut:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"});
Ini akan mengubah string "z" dalam array yang dipegang F ke string "b".
Saat memanggil IDispatch
anggota, Anda dapat menentukan DispID alih-alih nama anggota, menggunakan format string "[DispID=##]". Misalnya, jika DispID myComMethod adalah 3, Anda dapat menentukan string "[DispID=3]" alih-alih "MyComMethod". Memanggil anggota oleh DispID lebih cepat daripada mencari anggota berdasarkan nama. Dalam skenario agregasi yang kompleks, DispID terkadang merupakan satu-satunya cara untuk memanggil anggota yang diinginkan.
Catatan
Dimulai dengan .NET Framework 2.0 Paket Layanan 1, metode ini dapat digunakan untuk mengakses anggota non-publik jika penelepon telah diberikan ReflectionPermission dengan ReflectionPermissionFlag.RestrictedMemberAccess bendera dan jika sekumpulan pemberian anggota non-publik dibatasi untuk set pemberian penelepon, atau subsetnya. (Lihat Pertimbangan Keamanan untuk Refleksi.)
Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.
Lihat juga
- String
- Binder
- DefaultBinder
- BindingFlags
- ParameterModifier
- ParameterAttributes
- CultureInfo
- ReflectionPermission
Berlaku untuk
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan mencocokkan daftar argumen dan budaya yang ditentukan.
public:
System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture);
public:
virtual System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture);
public object? InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Globalization.CultureInfo? culture);
public object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Globalization.CultureInfo culture);
member this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Globalization.CultureInfo -> obj
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Globalization.CultureInfo -> obj
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Globalization.CultureInfo -> obj
Public Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), culture As CultureInfo) As Object
Parameter
- name
- String
String yang berisi nama konstruktor, metode, properti, atau anggota bidang untuk dipanggil.
-atau-
String kosong ("") untuk memanggil anggota default.
-atau-
Untuk IDispatch
anggota, string yang mewakili DispID, misalnya "[DispID=3]".
- invokeAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan. Aksesnya bisa menjadi salah BindingFlags
satu dari seperti , , NonPublic
, Private
InvokeMethod
, GetField
, dan sebagainyaPublic
. Tipe pencarian tidak perlu ditentukan. Jika jenis pencarian dihilangkan, BindingFlags.Public
| | BindingFlags.Instance
BindingFlags.Static
digunakan.
- binder
- Binder
Objek yang mendefinisikan sekumpulan properti dan memungkinkan pengikatan, yang dapat melibatkan pemilihan metode yang kelebihan beban, paksaan jenis argumen, dan pemanggilan anggota melalui refleksi.
-atau-
Referensi null (Nothing
di Visual Basic), untuk menggunakan DefaultBinder. Perhatikan bahwa secara eksplisit mendefinisikan Binder objek mungkin diperlukan untuk berhasil memanggil metode kelebihan beban dengan argumen variabel.
- target
- Object
Objek tempat memanggil anggota yang ditentukan.
- args
- Object[]
Array yang berisi argumen untuk diteruskan ke anggota untuk dipanggil.
- culture
- CultureInfo
Objek yang mewakili lokal globalisasi untuk digunakan, yang mungkin diperlukan untuk konversi khusus lokal, seperti mengonversi numerik String menjadi Double.
-atau-
Referensi null (Nothing
di Visual Basic) untuk menggunakan utas CultureInfosaat ini.
Mengembalikan
Objek yang mewakili nilai pengembalian anggota yang dipanggil.
Penerapan
Pengecualian
invokeAttr
tidak berisi CreateInstance
dan name
adalah null
.
invokeAttr
bukan atribut yang valid BindingFlags .
-atau-
invokeAttr
tidak berisi salah satu bendera pengikatan berikut: InvokeMethod
, , CreateInstance
, GetField
SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi CreateInstance
dikombinasikan dengan InvokeMethod
, GetField
, SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi dan GetField
SetField
.
-atau-
invokeAttr
berisi dan GetProperty
SetProperty
.
-atau-
invokeAttr
berisi InvokeMethod
dikombinasikan dengan SetField
atau SetProperty
.
-atau-
invokeAttr
berisi SetField
dan args
memiliki lebih dari satu elemen.
-atau-
Metode ini dipanggil pada objek COM dan salah satu bendera pengikatan berikut tidak diteruskan di: BindingFlags.InvokeMethod
, , BindingFlags.GetProperty
, BindingFlags.SetProperty
BindingFlags.PutDispProperty
, atau BindingFlags.PutRefDispProperty
.
-atau-
Salah satu array parameter bernama berisi string yaitu null
.
Anggota yang ditentukan adalah penginisialisasi kelas.
Bidang atau properti tidak dapat ditemukan.
Tidak ada metode yang dapat ditemukan yang cocok dengan argumen di args
.
-atau-
Objek saat ini Type mewakili jenis yang berisi parameter jenis terbuka, yaitu, ContainsGenericParameters mengembalikan true
.
Anggota yang ditentukan tidak dapat dipanggil pada target
.
Lebih dari satu metode cocok dengan kriteria pengikatan.
Metode yang diwakili oleh name
memiliki satu atau beberapa parameter jenis generik yang tidak ditentukan. Artinya, properti metode ContainsGenericParameters mengembalikan true
.
Keterangan
Meskipun pengikat default tidak memproses CultureInfo ( culture
parameter ), Anda dapat menggunakan kelas abstrak System.Reflection.Binder untuk menulis pengikat kustom yang memproses culture
.
Catatan
Anda tidak dapat menggunakan InvokeMember untuk memanggil metode generik.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Tentukan
BindingFlags.Public
untuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublic
untuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.Tentukan
BindingFlags.FlattenHierarchy
untuk menyertakan anggota statis ke hierarki.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
BindingFlags.IgnoreCase
untuk mengabaikan kasusname
.BindingFlags.DeclaredOnly
untuk mencari hanya anggota yang dideklarasikan pada Type, bukan anggota yang hanya diwarisi.
Bendera pemanggilan berikut BindingFlags dapat digunakan untuk menunjukkan tindakan apa yang harus diambil dengan anggota:
CreateInstance
untuk memanggil konstruktor.name
diabaikan. Tidak valid dengan bendera pemanggilan lainnya.InvokeMethod
untuk memanggil metode, tetapi bukan konstruktor atau penginisialisasi jenis. Tidak valid denganSetField
atauSetProperty
. JikaInvokeMethod
ditentukan dengan sendirinya,BindingFlags.Public
,BindingFlags.Instance
, danBindingFlags.Static
secara otomatis disertakan.GetField
untuk mendapatkan nilai bidang. Tidak valid denganSetField
.SetField
untuk mengatur nilai bidang. Tidak valid denganGetField
.GetProperty
untuk mendapatkan properti. Tidak valid denganSetProperty
.SetProperty
untuk mengatur properti. Tidak valid denganGetProperty
.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Metode akan dipanggil jika kedua kondisi berikut ini benar:
Jumlah parameter dalam deklarasi metode sama dengan jumlah argumen dalam
args
array (kecuali argumen default ditentukan pada anggota danBindingFlags.OptionalParamBinding
ditentukan).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 nilai InvokeMethod
, , GetProperty
dan sebagainya). Kumpulan metode difilter berdasarkan nama, jumlah argumen, dan sekumpulan pengubah pencarian yang ditentukan dalam pengikat.
Setelah metode dipilih, metode dipanggil. Aksesibilitas diperiksa pada saat itu. Pencarian dapat mengontrol set metode mana yang dicari berdasarkan atribut aksesibilitas yang terkait dengan metode . Metode Binder.BindToMethodBinder kelas bertanggung jawab untuk 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 Pantulan setiap kali kode sepenuhnya dipercaya.
Anda bisa menggunakan Type.InvokeMember
untuk mengatur bidang ke nilai tertentu dengan menentukan BindingFlags.SetField. Misalnya, jika Anda ingin mengatur bidang instans publik bernama F pada kelas C, dan F adalah kode yang String
dapat Anda gunakan seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"}, null);
Jika F adalah String[]
, Anda dapat menggunakan kode seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}}, null);
yang akan menginisialisasi bidang F ke array baru ini. Anda juga dapat menggunakan Type.InvokeMember
untuk mengatur posisi dalam array dengan menyediakan indeks nilai lalu nilai berikutnya dengan menggunakan kode seperti berikut:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"}, null);
Ini akan mengubah string "z" dalam array yang dipegang F ke string "b".
Saat memanggil IDispatch
anggota, Anda dapat menentukan DispID alih-alih nama anggota, menggunakan format string "[DispID=##]". Misalnya, jika DispID myComMethod adalah 3, Anda dapat menentukan string "[DispID=3]" alih-alih "MyComMethod". Memanggil anggota oleh DispID lebih cepat daripada mencari anggota berdasarkan nama. Dalam skenario agregasi yang kompleks, DispID terkadang merupakan satu-satunya cara untuk memanggil anggota yang diinginkan.
Catatan
Dimulai dengan .NET Framework 2.0 Service Pack 1, metode ini dapat digunakan untuk mengakses anggota non-publik jika penelepon telah diberikan ReflectionPermission dengan ReflectionPermissionFlag.RestrictedMemberAccess bendera dan jika set pemberian anggota non-publik dibatasi untuk set pemberian penelepon, atau subsetnya. (Lihat Pertimbangan Keamanan untuk Refleksi.)
Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.
Lihat juga
- String
- Binder
- DefaultBinder
- BindingFlags
- ParameterModifier
- ParameterAttributes
- CultureInfo
- ReflectionPermission
Berlaku untuk
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Saat ditimpa di kelas turunan, memanggil anggota yang ditentukan, menggunakan batasan pengikatan yang ditentukan dan mencocokkan daftar argumen, pengubah, dan budaya yang ditentukan.
public:
abstract 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 abstract 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 abstract 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 MustOverride 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
String yang berisi nama konstruktor, metode, properti, atau anggota bidang yang akan dipanggil.
-atau-
String kosong ("") untuk memanggil anggota default.
-atau-
Untuk IDispatch
anggota, string yang mewakili DispID, misalnya "[DispID=3]".
- invokeAttr
- BindingFlags
Kombinasi bitwise dari nilai enumerasi yang menentukan bagaimana pencarian dilakukan. Aksesnya bisa menjadi salah BindingFlags
satu seperti Public
, , NonPublic
, Private
InvokeMethod
, GetField
, dan sebagainya. Tipe pencarian tidak perlu ditentukan. Jika jenis pencarian dihilangkan, BindingFlags.Public
| | BindingFlags.Instance
BindingFlags.Static
digunakan.
- binder
- Binder
Objek yang menentukan sekumpulan properti dan memungkinkan pengikatan, yang dapat melibatkan pemilihan metode yang kelebihan beban, pemaksaan jenis argumen, dan pemanggilan anggota melalui refleksi.
-atau-
Referensi null (Tidak ada di Visual Basic), untuk menggunakan DefaultBinder. Perhatikan bahwa secara eksplisit mendefinisikan Binder objek mungkin diperlukan untuk berhasil memanggil metode kelebihan beban dengan argumen variabel.
- target
- Object
Objek untuk memanggil anggota yang ditentukan.
- args
- Object[]
Array yang berisi argumen untuk diteruskan ke anggota untuk dipanggil.
- modifiers
- ParameterModifier[]
Array ParameterModifier objek yang mewakili atribut yang terkait dengan elemen yang sesuai dalam args
array. Atribut terkait parameter disimpan dalam tanda tangan anggota.
Pengikat default memproses parameter ini hanya saat memanggil komponen COM.
- culture
- CultureInfo
Objek CultureInfo yang mewakili lokal globalisasi untuk digunakan, yang mungkin diperlukan untuk konversi khusus lokal, seperti mengonversi String numerik menjadi Ganda.
-atau-
Referensi null (Nothing
di Visual Basic) untuk menggunakan utas CultureInfosaat ini.
- namedParameters
- String[]
Array yang berisi nama parameter tempat nilai dalam args
array diteruskan.
Mengembalikan
Objek yang mewakili nilai pengembalian anggota yang dipanggil.
Penerapan
Pengecualian
invokeAttr
tidak berisi CreateInstance
dan name
adalah null
.
args
dan modifiers
tidak memiliki panjang yang sama.
-atau-
invokeAttr
bukan atribut yang valid BindingFlags .
-atau-
invokeAttr
tidak berisi salah satu bendera pengikatan berikut: InvokeMethod
, , CreateInstance
, GetField
SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi CreateInstance
dikombinasikan dengan InvokeMethod
, GetField
, SetField
, GetProperty
, atau SetProperty
.
-atau-
invokeAttr
berisi dan GetField
SetField
.
-atau-
invokeAttr
berisi dan GetProperty
SetProperty
.
-atau-
invokeAttr
berisi InvokeMethod
dikombinasikan dengan SetField
atau SetProperty
.
-atau-
invokeAttr
berisi SetField
dan args
memiliki lebih dari satu elemen.
-atau-
Array parameter bernama lebih besar dari array argumen.
-atau-
Metode ini dipanggil pada objek COM dan salah satu bendera pengikatan berikut tidak diteruskan dalam: BindingFlags.InvokeMethod
, , BindingFlags.GetProperty
, BindingFlags.SetProperty
BindingFlags.PutDispProperty
, atau BindingFlags.PutRefDispProperty
.
-atau-
Salah satu array parameter bernama berisi string yaitu null
.
Anggota yang ditentukan adalah penginisialisasi kelas.
Bidang atau properti tidak dapat ditemukan.
Tidak ada metode yang dapat ditemukan yang cocok dengan argumen di args
.
-atau-
Tidak ada anggota yang dapat ditemukan yang memiliki nama argumen yang disediakan dalam namedParameters
.
-atau-
Objek saat ini Type mewakili jenis yang berisi parameter jenis terbuka, yaitu, ContainsGenericParameters mengembalikan true
.
Anggota yang ditentukan tidak dapat dipanggil pada target
.
Lebih dari satu metode cocok dengan kriteria pengikatan.
Metode yang diwakili oleh name
memiliki satu atau beberapa parameter jenis generik yang tidak ditentukan. Artinya, properti metode ContainsGenericParameters mengembalikan true
.
Keterangan
InvokeMember
memanggil anggota konstruktor atau anggota metode, mendapatkan atau menetapkan anggota properti, mendapatkan atau mengatur anggota bidang data, atau mendapatkan atau menetapkan elemen anggota array.
Catatan
Anda tidak dapat menggunakan InvokeMember untuk memanggil metode generik.
Saat memanggil IDispatch
anggota, Anda dapat menentukan DispID alih-alih nama anggota, menggunakan format string "[DispID=##]". Misalnya, jika DispID MyComMethod adalah 3, Anda dapat menentukan string "[DispID=3]" alih-alih "MyComMethod". Memanggil anggota oleh DispID lebih cepat daripada mencari anggota berdasarkan nama. Dalam skenario agregasi yang kompleks, DispID terkadang merupakan satu-satunya cara untuk memanggil anggota yang diinginkan.
Meskipun pengikat default tidak memproses atau (parameter dan culture
), Anda dapat menggunakan kelas abstrak System.Reflection.Binder untuk menulis pengikat kustom yang memproses modifiers
dan culture
.modifiers
CultureInfoParameterModifier
ParameterModifier
hanya digunakan saat memanggil melalui interop COM, dan hanya parameter yang diteruskan oleh referensi yang ditangani.
Setiap parameter dalam namedParameters
array mendapatkan nilai dalam elemen yang sesuai dalam args
array. Jika panjang args
lebih besar dari panjang namedParameters
, nilai argumen yang tersisa diteruskan secara berurutan.
Array namedParameters
dapat digunakan untuk mengubah urutan argumen dalam array input. Misalnya, mengingat metode M(string a, int b)
(M(ByVal a As String, ByVal b As Integer)
dalam Visual Basic) dan array { 42, "x" }
input , array input dapat diteruskan args
tidak berubah jika array { "b", "a" }
disediakan untuk namedParameters
.
Bendera filter berikut BindingFlags dapat digunakan untuk menentukan anggota mana yang akan disertakan dalam pencarian:
Tentukan
BindingFlags.Public
untuk menyertakan anggota publik dalam pencarian.Tentukan
BindingFlags.NonPublic
untuk menyertakan anggota non-publik (yaitu, privat, internal, dan anggota yang dilindungi) dalam pencarian.Tentukan
BindingFlags.FlattenHierarchy
untuk menyertakan anggota statis ke hierarki.
Bendera pengubah berikut BindingFlags dapat digunakan untuk mengubah cara kerja pencarian:
BindingFlags.IgnoreCase
untuk mengabaikan kasusname
.BindingFlags.DeclaredOnly
untuk mencari hanya anggota yang dinyatakan pada Type, bukan anggota yang hanya diwariskan.
Bendera pemanggilan berikut BindingFlags dapat digunakan untuk menunjukkan tindakan apa yang harus diambil dengan anggota:
CreateInstance
untuk memanggil konstruktor.name
diabaikan. Tidak valid dengan bendera pemanggilan lainnya.InvokeMethod
untuk memanggil metode, tetapi bukan konstruktor atau penginisialisasi jenis. Tidak valid denganSetField
atauSetProperty
. JikaInvokeMethod
ditentukan dengan sendirinya,BindingFlags.Public
,BindingFlags.Instance
, danBindingFlags.Static
secara otomatis disertakan.GetField
untuk mendapatkan nilai bidang. Tidak valid denganSetField
.SetField
untuk mengatur nilai bidang. Tidak valid denganGetField
.GetProperty
untuk mendapatkan properti. Tidak valid denganSetProperty
.SetProperty
untuk mengatur properti. Tidak valid denganGetProperty
.
Lihat System.Reflection.BindingFlags untuk informasi lebih lanjut.
Metode akan dipanggil jika kedua kondisi berikut ini benar:
Jumlah parameter dalam deklarasi metode sama dengan jumlah argumen dalam
args
array (kecuali argumen default ditentukan pada anggota danBindingFlags.OptionalParamBinding
ditentukan).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 nilai InvokeMethod
, , GetProperty
dan sebagainya). Kumpulan metode difilter berdasarkan nama, jumlah argumen, dan sekumpulan pengubah pencarian yang ditentukan dalam pengikat.
Setelah metode dipilih, metode dipanggil. Aksesibilitas diperiksa pada saat itu. Pencarian dapat mengontrol set metode mana yang dicari berdasarkan atribut aksesibilitas yang terkait dengan metode . Metode Binder.BindToMethodBinder kelas bertanggung jawab untuk memilih metode yang akan dipanggil. Pengikat default memilih kecocokan yang paling spesifik.
InvokeMember
dapat digunakan untuk memanggil metode dengan parameter yang memiliki nilai default. Untuk mengikat metode ini, Reflection harus BindingFlags.OptionalParamBinding ditentukan. Untuk parameter yang memiliki nilai default, Anda dapat menyediakan nilai yang berbeda, atau menyediakan Missing.Value untuk menggunakan nilai default.
Misalnya, pertimbangkan metode seperti MyMethod(int x, float y = 2.0). Untuk memanggil metode ini hanya dengan argumen pertama sebagai MyMethod(4), lewati salah satu bendera pengikatan di atas dan lewati dua argumen, yaitu, 4 untuk argumen pertama dan Missing.Value
untuk argumen kedua. Kecuali Anda menggunakan Missing.Value
, Anda mungkin tidak menghilangkan parameter opsional dengan Invoke
metode . Jika Anda harus melakukannya, gunakan InvokeMember
sebagai gantinya.
Pembatasan akses diabaikan untuk kode yang sepenuhnya tepercaya; artinya, konstruktor privat, metode, bidang, dan properti dapat diakses dan dipanggil setiap System.Reflection kali kode sepenuhnya dipercaya.
Anda bisa menggunakan Type.InvokeMember
untuk mengatur bidang ke nilai tertentu dengan menentukan BindingFlags.SetField. Misalnya, jika Anda ingin mengatur bidang instans publik bernama F pada kelas C, dan F adalah String
, Anda dapat menggunakan kode seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {"strings new value"}, null, null, null);
Jika F adalah String[]
, Anda dapat menggunakan kode seperti:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {new String[]{"a","z","c","d"}}, null, null, null);
yang akan menginisialisasi bidang F ke array baru ini. Anda juga dapat menggunakan Type.InvokeMember
untuk mengatur posisi dalam array dengan menyediakan indeks nilai lalu nilai berikutnya dengan menggunakan kode seperti berikut:
typeof(C).InvokeMember("F", BindingFlags.SetField, null, c, new Object[] {1, "b"}, null, null, null);
Ini akan mengubah string "z" dalam array yang dipegang F ke string "b".
Catatan
Dimulai dengan .NET Framework 2.0 Paket Layanan 1, metode ini dapat digunakan untuk mengakses anggota non-publik jika penelepon telah diberikan ReflectionPermission dengan ReflectionPermissionFlag.RestrictedMemberAccess bendera dan jika sekumpulan pemberian anggota non-publik dibatasi untuk set pemberian penelepon, atau subsetnya. (Lihat Pertimbangan Keamanan untuk Refleksi.)
Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.
Lihat juga
- String
- Binder
- DefaultBinder
- BindingFlags
- ParameterModifier
- ParameterAttributes
- CultureInfo
- ReflectionPermission