TypeDelegator.InvokeMember Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anropar den angivna medlemmen. Den metod som ska anropas måste vara tillgänglig och tillhandahålla den mest specifika matchningen med den angivna argumentlistan, under begränsningarna för de angivna attributen för pärm och anrop.
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
Parametrar
- name
- String
Namnet på medlemmen som ska anropas. Detta kan vara en konstruktor, metod, egenskap eller fält. Om en tom sträng ("") skickas anropas standardmedlemmen.
- invokeAttr
- BindingFlags
Anropsattributet. Detta måste vara något av följande: , , , , , , BindingFlagseller InvokeMethod. CreateInstanceStaticGetFieldSetFieldGetPropertySetProperty Ett lämpligt anropsattribut måste anges. Om en statisk medlem ska anropas Static måste flaggan anges.
- binder
- Binder
Ett objekt som möjliggör bindning, tvång av argumenttyper, anrop av medlemmar och hämtning av MemberInfo objekt via reflektion. Om binder är nullanvänds standardbindningen. Se även Binder.
- target
- Object
Det objekt som den angivna medlemmen ska anropas på.
- args
- Object[]
En matris av typen Object som innehåller antalet, ordningen och typen av parametrar för den medlem som ska anropas. Om args innehåller en uninitialiserad Objectbehandlas den som tom, som med standardbindningen kan utvidgas till 0, 0,0 eller en sträng.
- modifiers
- ParameterModifier[]
En matris av typen ParameterModifier som är lika lång som , med element som representerar attributen som är associerade med argumenten för den medlem som argsska anropas. En parameter har attribut som är associerade med den i medlemmens signatur. För ByRef använder du ParameterModifier.ByRef, och för ingen, använder du ParameterModifier.None. Standardbindningen matchar exakt dessa. Attribut som In och InOut används inte i bindning och kan visas med hjälp av ParameterInfo.
- culture
- CultureInfo
En instans av CultureInfo som används för att styra tvång av typer. Detta är till exempel nödvändigt för att konvertera en sträng som representerar 1 000 till ett Double värde, eftersom 1 000 representeras på olika sätt av olika kulturer. Om culture är nullCultureInfo används för den aktuella trådenCultureInfo.
- namedParameters
- String[]
En strängmatris som innehåller parameternamn som matchar, med början vid element noll, med matrisen args . Det får inte finnas några hål i matrisen. Om args.
Length är större än namedParameters.
Lengthfylls de återstående parametrarna i ordning.
Returer
En Object som representerar returvärdet för den anropade medlemmen.
- Attribut
Kommentarer
En metod anropas om båda följande villkor är uppfyllda:
Antalet parametrar i metoddeklarationen är lika med antalet argument i den angivna argumentlistan (såvida inte standardargument definieras för medlemmen).
Typen av varje argument kan konverteras med bindemedlet till parametertypen.
Pärmen hittar alla matchande metoder. Dessa metoder hittas baserat på vilken typ av bindning som begärs (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesoch så vidare). Uppsättningen metoder filtreras efter namn, antal argument och en uppsättning sökmodifierare som definierats i bindemedlet.
När metoden har valts anropas den. Tillgängligheten är markerad vid den tidpunkten. Sökningen kan styra vilken uppsättning metoder som söks baserat på hjälpmedelsattributet som är associerat med metoden. Metoden Binder.BindToMethod ansvarar för att välja den metod som ska anropas. Standardbindningen väljer den mest specifika matchningen.
Note
Åtkomstbegränsningar ignoreras för fullständigt betrodd kod. Det vill: privata konstruktorer, metoder, fält och egenskaper kan nås och anropas med reflektion när koden är helt betrodd.
För närvarande utför InvokeMember Microsoft .NET Framework-reflektionssemantiken för varje typ av objekt.
Om medlemmen som anges med namn är en matris och BindingFlags.GetField flaggan är inställd på invokeAttranger matrisen args de element vars värden ska returneras. Följande anrop via Type -objektet t returnerar till exempel värdet för det första elementet i strängmatrisen MyArray, som är medlem i det anropande objektet:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
Du kan använda InvokeMember för att ange ett eller flera element i en medlemsmatris. Alla element är inställda på samma värde. Matrisen args måste formateras på följande sätt:
{index1,
index2,, value}
Om du till exempel vill ange den första medlemmen i MyArray från föregående exempel är syntaxen följande:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});