TypeDelegator.InvokeMember Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Roept het opgegeven lid aan. De methode die moet worden aangeroepen, moet toegankelijk zijn en de meest specifieke overeenkomst bieden met de opgegeven argumentenlijst, onder de beperkingen van de opgegeven binder- en aanroepkenmerken.
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);
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
Parameters
- name
- String
De naam van het lid dat moet worden aangeroepen. Dit kan een constructor, methode, eigenschap of veld zijn. Als een lege tekenreeks ("") wordt doorgegeven, wordt het standaardlid aangeroepen.
- invokeAttr
- BindingFlags
Het aanroepkenmerk. Dit moet een van de volgende BindingFlags zijn: InvokeMethod, , StaticCreateInstance, GetField, , SetField, , of GetPropertySetProperty. Er moet een geschikt aanroepkenmerk worden opgegeven. Als een statisch lid moet worden aangeroepen, moet de Static vlag worden ingesteld.
- binder
- Binder
Een object dat de binding, dwang van argumenttypen, het aanroepen van leden en het ophalen van MemberInfo objecten via reflectie mogelijk maakt. Als binder dat het is null, wordt de standaardbinding gebruikt. Zie Binder.
- target
- Object
Het object waarop het opgegeven lid moet worden aangeroepen.
- args
- Object[]
Een matrix van het type Object dat het aantal, de volgorde en het type van de parameters van het lid bevat dat moet worden aangeroepen. Als args het een niet-geïnitialiseerde Objectwaarde bevat, wordt deze behandeld als leeg, die, met de standaardbinding, kan worden uitgebreid tot 0, 0,0 of een tekenreeks.
- modifiers
- ParameterModifier[]
Een matrix van het type ParameterModifier dat dezelfde lengte heeft als args, met elementen die de kenmerken vertegenwoordigen die zijn gekoppeld aan de argumenten van het lid dat moet worden aangeroepen. Aan een parameter zijn kenmerken gekoppeld in de handtekening van het lid. Voor ByRef, gebruik ParameterModifier.ByRefen voor geen, gebruik ParameterModifier.None. De standaardbinding doet precies overeenkomen met deze. Kenmerken zoals In en InOut worden niet gebruikt in bindingen en kunnen worden weergegeven met behulp van ParameterInfo.
- culture
- CultureInfo
Een exemplaar dat CultureInfo wordt gebruikt om de dwang van typen te bepalen. Dit is bijvoorbeeld nodig om een tekenreeks te converteren die 1000 vertegenwoordigt naar een Double waarde, omdat 1000 anders wordt weergegeven door verschillende culturen. Als culture dat het is null, wordt het CultureInfo voor de huidige thread CultureInfo gebruikt.
- namedParameters
- String[]
Een tekenreeksmatrix met parameternamen die overeenkomen, beginnend bij element nul, met de args matrix. Er mogen geen gaten in de matrix zijn. Als args.
Length is groter dan namedParameters.
Length, worden de resterende parameters ingevuld in volgorde.
Retouren
Een Object weergave van de retourwaarde van het aangeroepen lid.
Opmerkingen
Er wordt een methode aangeroepen als aan beide voorwaarden wordt voldaan:
Het aantal parameters in de methodedeclaratie is gelijk aan het aantal argumenten in de opgegeven argumentenlijst (tenzij de standaardargumenten voor het lid zijn gedefinieerd).
Het type van elke argumenten kan door de binder worden geconverteerd naar het type parameter.
De binder vindt alle overeenkomende methoden. Deze methoden worden gevonden op basis van het type binding dat is aangevraagd (BindingFlags.MethodInvoke, BindingFlags.GetPropertiesenzovoort). De set methoden wordt gefilterd op de naam, het aantal argumenten en een set zoekaanpassingen die zijn gedefinieerd in de binder.
Nadat de methode is geselecteerd, wordt deze aangeroepen. De toegankelijkheid wordt op dat moment gecontroleerd. De zoekopdracht kan bepalen welke set methoden wordt doorzocht op basis van het toegankelijkheidskenmerk dat aan de methode is gekoppeld. De Binder.BindToMethod methode is verantwoordelijk voor het selecteren van de methode die moet worden aangeroepen. De standaardbinding selecteert de meest specifieke overeenkomst.
Note
Toegangsbeperkingen worden genegeerd voor volledig vertrouwde code. Dat wil gezegd, privéconstructors, methoden, velden en eigenschappen kunnen worden geopend en aangeroepen met behulp van reflectie wanneer de code volledig wordt vertrouwd.
Momenteel voert InvokeMember de Microsoft .NET Framework weerspiegelingsemantiek uit voor elk type object.
Als het lid dat op naam is opgegeven een matrix is en de BindingFlags.GetField vlag is ingesteld invokeAttr, geeft de args matrix de elementen op waarvan de waarden moeten worden geretourneerd. De volgende aanroep via Type het object t retourneert bijvoorbeeld de waarde van het eerste element van de tekenreeksmatrix MyArray, dat lid is van het aanroepende object:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
U kunt een InvokeMember of meer elementen van een lidmatrix instellen. Alle elementen zijn ingesteld op dezelfde waarde. De args matrix moet als volgt worden opgemaakt:
{index1,
index2,, value}
Als u bijvoorbeeld het eerste lid van MyArray uit het vorige voorbeeld wilt instellen, is de syntaxis als volgt:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
Variant[]{0,"Updated"});