TypeDelegator.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. Ç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"});