Type.GetMethods 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.
Lekéri az aktuális Typemetódusokat.
Túlterhelések
| Name | Description |
|---|---|
| GetMethods(BindingFlags) |
Ha egy származtatott osztályban felül van bírálva, a megadott kötési korlátozások használatával megkeresi az aktuálishoz Typedefiniált metódusokat. |
| GetMethods() |
Az aktuális Typenyilvános metódusokat adja vissza. |
GetMethods(BindingFlags)
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
Ha egy származtatott osztályban felül van bírálva, a megadott kötési korlátozások használatával megkeresi az aktuálishoz Typedefiniált metódusokat.
public:
abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()
Paraméterek
- bindingAttr
- BindingFlags
A számbavételi értékek bitenkénti kombinációja, amely meghatározza a keresés menetét.
-vagy-
Default üres tömb visszaadásához.
Válaszok
Az aktuálishoz MethodInfo definiált összes metódust képviselő objektumtömbType, amely megfelel a megadott kötési korlátozásoknak.
-vagy-
Üres típusú MethodInfotömb, ha nincs definiálva metódus az aktuálishoz Type, vagy ha egyik definiált metódus sem felel meg a kötési korlátozásoknak.
Megvalósítás
- Attribútumok
Példák
Az alábbi példa létrehoz egy osztályt két nyilvános és egy védett metódussal, létrehoz egy Type megfelelő objektumot MyTypeClass, lekéri az összes nyilvános és nem nyilvános metódust, és megjeleníti a nevüket.
using System;
using System.Reflection;
using System.Reflection.Emit;
// Create a class having two public methods and one protected method.
public class MyTypeClass
{
public void MyMethods()
{
}
public int MyMethods1()
{
return 3;
}
protected String MyMethods2()
{
return "hello";
}
}
public class TypeMain
{
public static void Main()
{
Type myType =(typeof(MyTypeClass));
// Get the public methods.
MethodInfo[] myArrayMethodInfo = myType.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
Console.WriteLine("\nThe number of public methods is {0}.", myArrayMethodInfo.Length);
// Display all the methods.
DisplayMethodInfo(myArrayMethodInfo);
// Get the nonpublic methods.
MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
// Display information for all methods.
DisplayMethodInfo(myArrayMethodInfo1);
}
public static void DisplayMethodInfo(MethodInfo[] myArrayMethodInfo)
{
// Display information for all methods.
for(int i=0;i<myArrayMethodInfo.Length;i++)
{
MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i];
Console.WriteLine("\nThe name of the method is {0}.", myMethodInfo.Name);
}
}
}
Imports System.Reflection
Imports System.Reflection.Emit
' Create a class having two public methods and one protected method.
Public Class MyTypeClass
Public Sub MyMethods()
End Sub
Public Function MyMethods1() As Integer
Return 3
End Function 'MyMethods1
Protected Function MyMethods2() As [String]
Return "hello"
End Function 'MyMethods2
End Class
Public Class TypeMain
Public Shared Sub Main()
Dim myType As Type = GetType(MyTypeClass)
' Get the public methods.
Dim myArrayMethodInfo As MethodInfo() = myType.GetMethods((BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
Console.WriteLine((ControlChars.Cr + "The number of public methods is " & myArrayMethodInfo.Length.ToString() & "."))
' Display all the public methods.
DisplayMethodInfo(myArrayMethodInfo)
' Get the nonpublic methods.
Dim myArrayMethodInfo1 As MethodInfo() = myType.GetMethods((BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
Console.WriteLine((ControlChars.Cr + "The number of protected methods is " & myArrayMethodInfo1.Length.ToString() & "."))
' Display all the nonpublic methods.
DisplayMethodInfo(myArrayMethodInfo1)
End Sub
Public Shared Sub DisplayMethodInfo(ByVal myArrayMethodInfo() As MethodInfo)
' Display information for all methods.
Dim i As Integer
For i = 0 To myArrayMethodInfo.Length - 1
Dim myMethodInfo As MethodInfo = CType(myArrayMethodInfo(i), MethodInfo)
Console.WriteLine((ControlChars.Cr + "The name of the method is " & myMethodInfo.Name & "."))
Next i
End Sub
End Class
Megjegyzések
Ahhoz, hogy a GetMethods(BindingFlags) túlterhelés sikeresen lekérje a metódusinformációkat, az bindingAttr argumentumnak tartalmaznia BindingFlags.InstanceBindingFlags.Static kell legalább az egyiket és az egyiket is.BindingFlags.NonPublicBindingFlags.Public
A következő BindingFlags szűrőjelölőkkel határozhatja meg, hogy mely metódusokat vegye fel a keresésbe:
Adja meg
BindingFlags.Instance, hogy a példány metódusai is szerepeljenek.Adja meg
BindingFlags.Static, hogy statikus metódusokat is tartalmazzon.Adja meg
BindingFlags.Public, hogy a nyilvános metódusok szerepeljenek a keresésben.Adja meg
BindingFlags.NonPublic, hogy nem nyilvános metódusokat (azaz privát, belső és védett metódusokat) is belefoglaljon a keresésbe. A rendszer csak a védett és belső metódusokat adja vissza az alaposztályokon; a rendszer nem ad vissza privát metódusokat az alaposztályokon.Adja meg a
BindingFlags.FlattenHierarchy-t, hogy a hierarchiába belefoglalja apublicésprotectedstatikus tagokat; az örökölt osztályokban lévőprivatestatikus tagok nem szerepelnek.Adjon meg
BindingFlags.Defaultönállóan egy üres MethodInfo tömb visszaadásához.
A keresés működésének módosításához az alábbi BindingFlags módosító jelzők használhatók:
-
BindingFlags.DeclaredOnlycsak a deklarált metódusok keresésére, nem pedig egyszerűen öröklődő Typemetódusokra.
További információért lásd a System.Reflection.BindingFlags jelű részt.
A .NET 6-os és korábbi verzióiban a GetMethods metódus nem ad vissza metódusokat egy adott sorrendben, például betűrendben vagy deklarációs sorrendben. A kód nem függ a metódusok visszaadási sorrendjétől, mert ez a sorrend eltérő. A 7. .NET kezdve azonban a rendezés determinisztikus a szerelvény metaadatainak sorrendje alapján.
Ha az áram Type egy konstruktált általános típust jelöl, ez a metódus az MethodInfo objektumokat a megfelelő típusargumentumokkal helyettesített típusparaméterekkel adja vissza.
Ha az aktuális Type érték egy típusparamétert jelöl egy általános vagy általános metódus definíciójában, ez a metódus megkeresi az osztálykényszer metódusait, vagy annak metódusait Object , ha nincs osztálykényszer.
Lásd még
- MethodInfo
- BindingFlags
- DefaultBinder
- GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
A következőre érvényes:
GetMethods()
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
Az aktuális Typenyilvános metódusokat adja vissza.
public:
cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public:
virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public System.Reflection.MethodInfo[] GetMethods();
public System.Reflection.MethodInfo[] GetMethods();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
abstract member GetMethods : unit -> System.Reflection.MethodInfo[]
override this.GetMethods : unit -> System.Reflection.MethodInfo[]
Public Function GetMethods () As MethodInfo()
Válaszok
Az aktuálishoz MethodInfodefiniált összes nyilvános metódust képviselő objektumtömbType.
-vagy-
Üres típusú MethodInfotömb, ha az aktuálishoz Typenincs meghatározva nyilvános metódus.
Megvalósítás
- Attribútumok
Megjegyzések
A .NET 6-os és korábbi verzióiban a GetMethods metódus nem ad vissza metódusokat egy adott sorrendben, például betűrendben vagy deklarációs sorrendben. A kód nem függ a metódusok visszaadási sorrendjétől, mert ez a sorrend eltérő. A 7. .NET kezdve azonban a rendezés determinisztikus a szerelvény metaadatainak sorrendje alapján.
A konstruktorok nem szerepelnek a hívás által visszaadott metódusok tömbjében. Hozzon létre egy külön hívást a GetConstructors() konstruktor metódusainak lekéréséhez.
Az alábbi táblázat azt mutatja be, hogy egy alaposztály mely tagjait adják vissza a metódusok egy Get típuson való tükrözéskor.
| Tagtípus | Static | Nem statikus |
|---|---|---|
| Constructor | No | No |
| Field | No | Yes. A mezők mindig név és aláírás alapján rejthetők el. |
| Esemény | Nem alkalmazható | A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést. |
| Módszer | No | Yes. A metódusok (mind a virtuális, mind a nem virtuális) elrejthetők név szerint vagy elrejthetők név és aláírás alapján. |
| Beágyazott típus | No | No |
| Ingatlan | Nem alkalmazható | A gyakori típusrendszerszabály az, hogy az öröklés megegyezik a tulajdonságot megvalósító metódusok öröklésével. A tükröződés a tulajdonságokat név és aláírás elrejtéseként kezeli. Lásd az alábbi 2. megjegyzést. |
A név és aláírás szerinti elrejtés az aláírás összes részét figyelembe veszi, beleértve az egyéni módosítókat, a visszatérési típusokat, a paramétertípusokat, a sentineleket és a nem kezelt hívási konvenciókat. Ez egy bináris összehasonlítás.
A reflexió során a tulajdonságok és események név és szignatúra szerint vannak elrejtve. Ha az alaposztálynak van egy beolvasási és egy beállítási kiegészítővel rendelkező tulajdonsága, de a származtatott osztálynak csak beolvasási kiegészítője van, a származtatott osztály tulajdonsága elrejti az alaposztály tulajdonságát, és nem tudja majd elérni a beállítót az alaposztályban.
Az egyéni attribútumok nem részei a gyakori típusrendszernek.
Note
Konstruktorok és metódusok keresésekor nem hagyhat ki paramétereket. Csak invokáláskor hagyhat ki paramétereket.
Ha az áram Type egy konstruktált általános típust jelöl, ez a metódus az MethodInfo objektumokat a megfelelő típusargumentumokkal helyettesített típusparaméterekkel adja vissza.
Ha az aktuális Type érték egy típusparamétert jelöl egy általános vagy általános metódus definíciójában, ez a metódus megkeresi az osztálykényszer metódusait, vagy annak metódusait Object , ha nincs osztálykényszer.