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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
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);
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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
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 bir 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 öğelere sahip, ile aynı uzunlukta ParameterModifierbir tür args dizisi. Parametrenin, üyenin imzasında kendisiyle ilişkilendirilmiş öznitelikleri vardır. ByRef için kullanın ParameterModifier.ByRefve hiçbiri için kullanın ParameterModifier.None. Varsayılan bağlayıcı bunlar üzerinde tam eşleşme yapar. ve InInOut gibi ö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ığı 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. Eğer args. Length değerinden namedParametersbüyüktür. Length, kalan parametreler sırayla doldurulur.

Döndürülenler

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

Öznitelikler

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 bir arama değiştirici 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.

Note

Tam güvenilir kod için erişim kısıtlamaları yoksayılır. Yani, koda tam olarak güvenildiğinde yansıma kullanılarak özel oluşturuculara, yöntemlere, alanlara ve özelliklere 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.

Adla belirtilen üye bir diziyse ve BindingFlags.GetField bayrağı üzerinde invokeAttrargs ayarlanmışsa, 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 örnekten MyArray'nin 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.