Aracılığıyla paylaş


IReflect.InvokeMember Yöntem

Tanım

Belirtilen üyeyi çağırır.

public:
 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 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 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);
abstract member InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public 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

Bulunacak üyenin adı.

invokeAttr
BindingFlags

Çağırma özniteliklerinden BindingFlags biri. invokeAttr parametresi bir oluşturucu, yöntem, özellik veya alan olabilir. Uygun bir çağırma özniteliği belirtilmelidir. Boş dizeyi ("") üyenin adı olarak geçirerek sınıfın varsayılan üyesini çağırın.

binder
Binder

BindingFlags Bit bayraklarından biri. BinderBu yöntemle ilgili özellikleri içeren öğesini uygular.

target
Object

Belirtilen üyenin çağrıldığı nesne. Statik üyeler için bu parametre yoksayılır.

args
Object[]

Çağrılacak üyenin parametrelerinin sayısını, sırasını ve türünü içeren bir nesne dizisi. Parametre yoksa bu boş bir dizidir.

modifiers
ParameterModifier[]

Bir nesne dizisi ParameterModifier . Bu dizi, çağrılan üyenin args meta verilerdeki bağımsız değişken özniteliklerini temsil eden parametresiyle aynı uzunluğa sahiptir. Bir parametrenin şu öznitelikleri olabilir: pdIn, pdOut, pdRetval, pdOptionalve pdHasDefault. Bunlar sırasıyla [In], [Out], [retval], [optional] ve varsayılan bir parametreyi temsil etti. Bu öznitelikler çeşitli birlikte çalışabilirlik hizmetleri tarafından kullanılır.

culture
CultureInfo

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

namedParameters
String[]

Parametre dizesi dizisi.

Döndürülenler

Belirtilen üye.

Özel durumlar

Bir alan setiçin birden fazla bağımsız değişken belirtildi.

Alan veya özellik bulunamıyor.

Yöntemi bulunamıyor.

Özel üye gerekli ReflectionPermissionolmadan çağrılır.

Örnekler

Aşağıdaki örnek özelliğinin Now değerini alır.

#using <System.DLL>

using namespace System;
using namespace System::Reflection;

#define NULL 0
void main()
{
   Type^ tDate = Type::GetType( L"System.DateTime" );
   Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
   Console::WriteLine( result->ToString() );
}
using System;
using System.Reflection;

public class MainClass
{
    public static void Main(string[] args)
    {
        Type tDate = typeof(System.DateTime);
        Object result = tDate.InvokeMember("Now",
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    }
}
Imports System.Reflection

Public Class MainClass
    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim tDate As Type = GetType(System.DateTime)
        Dim result As [Object] = tDate.InvokeMember("Now", _
            BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
        Console.WriteLine(result.ToString())
    End Sub
End Class

Açıklamalar

Ç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.

Yöntem bildirimindeki parametre sayısı belirtilen bağımsız değişken listesindeki bağımsız değişkenlerin sayısına eşitse ve her bağımsız değişkenin türü bağlayıcı tarafından parametre türüne dönüştürülebiliyorsa bir yöntem çağrılır.

Not

yöntemine InvokeMember geçirilen parametre değiştirici dizisi tek bir parametre değiştirici içermelidir. COM'a sunulduğunda hangi bağımsız değişkenin başvuru tarafından geçirilmesi gerektiği belirlenirken yalnızca ilk parametre değiştiricisi dikkate alınır.

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

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

Şunlara uygulanır

Ayrıca bkz.