IReflect.InvokeMember Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen üyeyi çağırır.
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
Parametreler
- name
- String
Bulunacak üyenin adı.
- invokeAttr
- BindingFlags
Çağırma özniteliklerinden BindingFlags biri. invokeAttr
parametresi bir oluşturucu, yöntem, özellik veya alan olabilir. Uygun bir çağırma özniteliği belirtilmelidir. Boş dizeyi ("") üyenin adı olarak geçirerek sınıfın varsayılan üyesini çağırın.
- binder
- Binder
BindingFlags Bit bayraklarından biri. BinderBu yöntemle ilgili özellikleri içeren öğesini uygular.
- target
- Object
Belirtilen üyenin çağrıldığı nesne. Statik üyeler için bu parametre yoksayılır.
- args
- Object[]
Çağrılacak üyenin parametrelerinin sayısını, sırasını ve türünü içeren bir nesne dizisi. Parametre yoksa bu boş bir dizidir.
- modifiers
- ParameterModifier[]
Bir nesne dizisi ParameterModifier . Bu dizi, çağrılan üyenin args
meta verilerdeki bağımsız değişken özniteliklerini temsil eden parametresiyle aynı uzunluğa sahiptir. Bir parametrenin şu öznitelikleri olabilir: pdIn
, pdOut
, pdRetval
, pdOptional
ve pdHasDefault
. Bunlar sırasıyla [In], [Out], [retval], [optional] ve varsayılan bir parametreyi temsil etti. Bu öznitelikler çeşitli birlikte çalışabilirlik hizmetleri tarafından kullanılır.
- culture
- CultureInfo
Türlerin CultureInfo zorlamasını idare etmek için kullanılan bir örneği. Örneğin, culture
1000'i temsil eden bir dizeyi bir Double değere dönüştürür, çünkü 1000 farklı kültürler tarafından farklı temsil edilir. Bu parametre isenull
CultureInfo, geçerli iş parçacığı için kullanılır.
- namedParameters
- String[]
Parametre dizesi dizisi.
Döndürülenler
Belirtilen üye.
Özel durumlar
Bir alan set
için birden fazla bağımsız değişken belirtildi.
Alan veya özellik bulunamıyor.
Yöntemi bulunamıyor.
Özel üye gerekli ReflectionPermissionolmadan çağrılır.
Örnekler
Aşağıdaki örnek özelliğinin Now değerini alır.
#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
Açıklamalar
Çağrılacak yöntemin erişilebilir olması ve belirtilen bağlayıcı ve çağırma özniteliklerinin kısıtlamaları altında belirtilen bağımsız değişken listesiyle en özel eşleşmeyi sağlaması gerekir.
Yöntem bildirimindeki parametre sayısı belirtilen bağımsız değişken listesindeki bağımsız değişkenlerin sayısına eşitse ve her bağımsız değişkenin türü bağlayıcı tarafından parametre türüne dönüştürülebiliyorsa bir yöntem çağrılır.
Not
yöntemine InvokeMember geçirilen parametre değiştirici dizisi tek bir parametre değiştirici içermelidir. COM'a sunulduğunda hangi bağımsız değişkenin başvuru tarafından geçirilmesi gerektiği belirlenirken yalnızca ilk parametre değiştiricisi dikkate alınır.
Bağlayıcı, istenen bağlama türüne (BindingFlags.InvokeMethod, GetPropertiesvb.) uygun olarak tüm eşleşen yöntemleri bulur. Yöntem kümesi ad, bağımsız değişken sayısı ve bağlayıcıda tanımlanan arama değiştiricileri kümesine göre filtrelenmiştir. Yöntem seçildikten sonra çağrılır ve erişilebilirlik bu noktada denetlener. Arama, yöntemiyle ilişkili erişilebilirlik özniteliğine göre hangi yöntem kümesinin aranabileceğini denetleyebilir. BindToMethod çağrılacak yöntemi seçer. Varsayılan bağlayıcı en özel eşleşmeyi seçer.
Tam olarak güvenilen kod için erişim kısıtlamaları yoksayılır. Yani özel oluşturucular, yöntemler, alanlar ve özelliklere, koda tam olarak güvenildiğinde yansıma üzerinden erişilebilir ve çağrılabilir.