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