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
, GetProperty
veya 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 binder
null
, 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ış Object
bir 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 args
bir tür ParameterModifier
dizisi. Parametrenin, üyenin imzasında kendisiyle ilişkilendirilmiş öznitelikleri vardır. ByRef için , ParameterModifier.ByRef
ve hiçbiri için kullanın ParameterModifier.None
. Varsayılan bağlayıcı bunlar üzerinde tam eşleşme yapar. ve gibi In
InOut
öznitelikler bağlamada kullanılmaz ve kullanılarak ParameterInfo
gö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 culture
null
, 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.GetProperties
vb.) 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 invokeAttr
args
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"});