TypeDelegator.InvokeMember Yöntem

Tanım

Belirtilen üyeyi çağırır. Ç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.

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

Parametreler

name
String

Çağrılacak üyenin adı. Bu bir oluşturucu, yöntem, özellik veya alan olabilir. Boş bir dize ("") geçirilirse, varsayılan üye çağrılır.

invokeAttr
BindingFlags

Çağırma özniteliği. Bu, aşağıdakilerden BindingFlags biri olmalıdır: InvokeMethod, CreateInstance, Static, GetField, SetField, GetPropertyveya SetProperty. Uygun bir çağırma özniteliği belirtilmelidir. Statik üye çağrılacaksa bayrağı ayarlanmalıdır Static .

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma yoluyla almayı MemberInfo sağlayan nesne. ise bindernull, varsayılan bağlayıcı kullanılır. Bkz. Binder.

target
Object

Belirtilen üyenin çağrıldığı nesne.

args
Object[]

Çağrılacak üyenin Object parametrelerinin sayısını, sırasını ve türünü içeren tür dizisi. args Başlatılmamış Objectbir içeriyorsa, boş olarak kabul edilir ve varsayılan bağlayıcı ile 0, 0,0 veya bir dizeye genişletilebilir.

modifiers
ParameterModifier[]

çağrılacak üyenin bağımsız değişkenleriyle ilişkili öznitelikleri temsil eden öğelerle, ile aynı uzunlukta argsbir tür ParameterModifier dizisi. Parametrenin, üyenin imzasında kendisiyle ilişkilendirilmiş öznitelikleri vardır. ByRef için , ParameterModifier.ByRefve hiçbiri için kullanın ParameterModifier.None. Varsayılan bağlayıcı bunlar üzerinde tam eşleşme yapar. ve gibi InInOut öznitelikler bağlamada kullanılmaz ve kullanılarak ParameterInfogörüntülenebilir.

culture
CultureInfo

Türlerin CultureInfo zorlamasını idare etmek için kullanılan bir örneği. Bu, örneğin, 1000'i temsil eden bir dizeyi bir Double değere dönüştürmek için gereklidir, çünkü 1000 farklı kültürler tarafından farklı temsil edilir. ise culturenull, CultureInfo geçerli iş parçacığının CultureInfo için kullanılır.

namedParameters
String[]

Sıfır öğesinden başlayarak diziyle args eşleşen parametre adlarını içeren bir dize dizisi. Dizide delik olmamalıdır. ise args. Length değerinden büyüktür namedParameters. Length, kalan parametreler sırayla doldurulur.

Döndürülenler

Object Çağrılan üyenin dönüş değerini temsil eden.

Açıklamalar

Aşağıdaki koşulların ikisi de doğruysa bir yöntem çağrılır:

  • Yöntem bildirimindeki parametre sayısı, belirtilen bağımsız değişken listesindeki bağımsız değişkenlerin sayısına eşittir (üyede varsayılan bağımsız değişkenler tanımlanmadığı sürece).

  • Her bağımsız değişkenin türü bağlayıcı tarafından parametre türüne dönüştürülebilir.

Bağlayıcı tüm eşleşen yöntemleri bulur. Bu yöntemler istenen bağlama türüne (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesvb.) göre bulunur. 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. Erişilebilirlik bu noktada denetlendi. Arama, yöntemiyle ilişkili erişilebilirlik özniteliğine göre hangi yöntem kümesinin aranabileceğini denetleyebilir. Binder.BindToMethod yöntemi, çağrılacak yöntemi seçmekle sorumludur. Varsayılan bağlayıcı en özel eşleşmeyi seçer.

Not

Tam olarak güvenilen kod için erişim kısıtlamaları yoksayılır. Yani özel oluşturucular, yöntemler, alanlar ve özellikler, koda tam olarak güvenildiğinde yansıma kullanılarak erişilebilir ve çağrılabilir.

Şu anda, InvokeMember her nesne türü için Microsoft .NET Framework yansıma semantiğini gerçekleştirir.

Ad ile belirtilen üye bir diziyse ve BindingFlags.GetField bayrağı üzerinde invokeAttrargs ayarlanırsa, dizi değerleri döndürülecek öğeleri belirtir. Örneğin, nesnesi aracılığıyla Type yapılan aşağıdaki çağrı, çağıran nesnenin t üyesi olan MyArray dize dizisinin ilk öğesinin değerini döndürür:

String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});

Bir üye dizisinin bir veya daha fazla öğesini ayarlamak için kullanabilirsiniz InvokeMember . Tüm öğeler aynı değere ayarlanır. Dizi args aşağıdaki gibi biçimlendirilmelidir:

{index1,  
    index2,, value}  

Örneğin, önceki örnekteki MyArray'in ilk üyesini ayarlamak için söz dizimi aşağıdaki gibidir:

t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new  
    Variant[]{0,"Updated"});  

Şunlara uygulanır

Ayrıca bkz.