TypeBuilder.InvokeMember Metódus

Definíció

Meghívja a megadott tagot. A meghívni kívánt metódusnak elérhetőnek kell lennie, és a megadott argumentumlistával a legspecifikusabb egyezést kell biztosítania a megadott kötési és meghívási attribútumok korlátozásai mellett.

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

Paraméterek

name
String

A meghívandó tag neve. Ez lehet konstruktor, metódus, tulajdonság vagy mező. Meg kell adni egy megfelelő meghívási attribútumot. Vegye figyelembe, hogy egy osztály alapértelmezett tagját meghívhatja úgy, hogy egy üres sztringet ad át a tag neveként.

invokeAttr
BindingFlags

Az invocation attribútum. Ennek egy bitjelzőnek kell lennie a forrásból BindingFlags.

binder
Binder

Olyan objektum, amely lehetővé teszi az argumentumtípusok kötését, kényszerítését, a tagok meghívását és az objektumok visszatükrözéssel történő lekérését MemberInfo . Ha a binder az null, akkor a rendszer az alapértelmezett iratgyűjtőt használja. Lásd a(z) Binder.

target
Object

Az az objektum, amelyen a megadott tagot meg kell hívni. Ha a tag statikus, a rendszer figyelmen kívül hagyja ezt a paramétert.

args
Object[]

Argumentumlista. Ez egy objektumtömb, amely a meghívandó tag paramétereinek számát, sorrendjét és típusát tartalmazza. Ha nincsenek paraméterek, ennek null értékűnek kell lennie.

modifiers
ParameterModifier[]

A meghívandó tag argumentumaihoz társított attribútumokat képviselő elemekhez hasonló hosszúságú args tömb. Egy paraméterhez attribútumok vannak társítva a metaadatokban. Ezeket különböző együttműködési szolgáltatások használják. További részletekért tekintse meg a metaadat-specifikációkat.

culture
CultureInfo

A típusok kényszerítésének szabályozására használt példány CultureInfo . Ha ez null érték, a rendszer az CultureInfo aktuális szálat használja. (Vegye figyelembe, hogy ez szükséges például egy 1000 értéket jelentő sztring dupla értékké alakításához, mivel az 1000-et különböző kultúrák jelölik.)

namedParameters
String[]

A tömb minden paramétere namedParameters a tömb megfelelő elemében kapja meg az args értéket. Ha a hossz args nagyobb, mint a hossza namedParameters, a fennmaradó argumentumértékek sorrendben lesznek átadva.

Válaszok

A meghívott tag visszatérési értékét adja vissza.

Attribútumok

Kivételek

Ez a módszer jelenleg nem támogatott a hiányos típusok esetében.

Megjegyzések

A rendszer meghív egy metódust, ha a metódusdeklarációban szereplő paraméterek száma megegyezik a megadott argumentumlistában szereplő argumentumok számával, és az egyes argumentumok típusát a kötő a paraméter típusára konvertálhatja.

A kötőanyag megtalálja az összes megfelelő metódust. Ezek a metódusok a kért kötés típusa alapján találhatók (BindingFlags.InvokeMethod, BindingFlags.GetProperties stb.). A metódusok halmazát a kötőanyagban definiált név, argumentumok száma és keresési módosítók halmaza szűri. A metódus kiválasztása után a rendszer meghívja. Az akadálymentesség ekkor be van jelölve. A keresés a metódushoz társított akadálymentességi attribútum alapján szabályozhatja, hogy mely metódusok kereshetők. A IBinder.BindToMethod metódus feladata a meghívni kívánt metódus kiválasztása. Az alapértelmezett kötés a legspecifikusabb egyezést választja ki.

Note

A hozzáférési korlátozások figyelmen kívül lesznek hagyva a teljes mértékben megbízható kód esetében. A magánkonstruktorok, metódusok, mezők és tulajdonságok a Reflection használatával érhetők el és hívhatók meg, ha a kód teljes mértékben megbízható.

Ez a módszer jelenleg nem támogatott. Lekérheti a típust a lekért típussal Type.GetType , vagy Assembly.GetType használhatja a visszaverődést a beolvasott típuson.

A következőre érvényes: