TypeBuilder.InvokeMember Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.