(0) exportieren Drucken
Alle erweitern

Type.GetMethods-Methode (BindingFlags)

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Bindungseinschränkungen die für den aktuellen Type definierten Methoden.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

public abstract MethodInfo[] GetMethods (
	BindingFlags bindingAttr
)
public abstract MethodInfo[] GetMethods (
	BindingFlags bindingAttr
)
public abstract function GetMethods (
	bindingAttr : BindingFlags
) : MethodInfo[]
Nicht zutreffend.

Parameter

bindingAttr

Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.

– oder –

0 (null), damit NULL-Verweis (Nothing in Visual Basic) zurückgegeben wird.

Rückgabewert

Ein Array von MethodInfo-Objekten, die sämtliche für den aktuellen Type definierten Methoden darstellen, die den angegebenen Bindungseinschränkungen entsprechen. – oder – Ein leeres Array vom MethodInfo-Typ, wenn für den aktuellen Type keine Methoden definiert sind oder keine der definierten Methoden den Bindungseinschränkungen entspricht.

Die GetMethods-Methode gibt Methoden nicht in einer bestimmten Reihenfolge zurück, d. h. nicht in alphabetischer Reihenfolge oder in der Reihenfolge der Deklaration. Der Code darf daher nicht von der Reihenfolge der zurückgegebenen Methoden abhängen, da diese variieren kann.

Über die folgenden BindingFlags-Filterflags kann festgelegt werden, welche Methoden in die Suche einbezogen werden:

  • Es wird nur dann ein Ergebnis zurückgegeben, wenn entweder BindingFlags.Instance oder BindingFlags.Static angegeben wird.

  • Geben Sie BindingFlags.Public an, um öffentliche Methoden in die Suche einzubeziehen.

  • Geben Sie BindingFlags.NonPublic an, um nicht öffentliche Methoden, d. h. private und geschützte Member, in die Suche einzubeziehen.

  • Geben Sie BindingFlags.FlattenHierarchy an, um statische public-Member und protected-Member in der Hierarchie einzuschließen. Statische private-Member in vererbten Klassen sind nicht eingeschlossen.

Die Funktionsweise der Suche kann über die folgenden BindingFlags-Modifiziererflags beeinflusst werden:

  • BindingFlags.DeclaredOnly, wenn ausschließlich nach für Type deklarierten Methoden gesucht werden soll und nicht nach Methoden, die nur geerbt wurden.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Diese Methode gibt NULL-Verweis (Nothing in Visual Basic) zurück, wenn die angeforderte Methode nicht öffentlich ist und der Aufrufer keine ReflectionPermission zum Reflektieren nicht öffentlicher Objekte außerhalb der aktuellen Assembly besitzt.

HinweisHinweis:

Bei der Suche nach Konstruktoren oder Methoden dürfen keine Parameter ausgelassen werden. Nur beim Aufruf können Parameter ausgelassen werden.

Wenn der aktuelle T:System.Type einen konstruierten generischen Typ darstellt, gibt diese Methode die MethodInfo-Objekte zurück, wobei die Typparameter durch die entsprechenden Typargumente ersetzt wurden.

Wenn der aktuelle Type einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Methoden der Klasseneinschränkung oder die Methoden von Object, wenn keine Klasseneinschränkung vorhanden ist.

Im folgenden Beispiel werden eine Klasse mit zwei öffentlichen und einer geschützten Methode und ein Type-Objekt erstellt, das MyTypeClass entspricht, sowie alle öffentlichen und nicht öffentlichen Methoden abgerufen und deren Namen angezeigt.


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);
        }
    }
}


import System.*;
import System.Reflection.*;
import System.Reflection.Emit.*;

// Create a class having two public methods and one protected method.
public class MyTypeClass
{
    public void MyMethods()
    {
    } //MyMethods

    public int MyMethods1()
    {
        return 3;
    } //MyMethods1

    protected String MyMethods2()
    {
        return "hello";
    } //MyMethods2
} //MyTypeClass

public class TypeMain
{
    public static void main(String[] args)
    {
        Type myType = MyTypeClass.class.ToType();
        // Get the public methods.
        MethodInfo myArrayMethodInfo[] = myType.GetMethods(BindingFlags.Public
            | BindingFlags.Instance | BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of public methods is {0}.",
            (Int32)(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}.",
            (Int32)(myArrayMethodInfo1.length));
        // Display information for all methods.
        DisplayMethodInfo(myArrayMethodInfo1);
    } //main

    public static void DisplayMethodInfo(MethodInfo myArrayMethodInfo[])
    {
        // Display information for all methods.
        for (int i = 0; i < myArrayMethodInfo.length; i++) {
            MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo.get_Item(i);
            Console.WriteLine("\nThe name of the method is {0}.", 
                myMethodInfo.get_Name());
        }
    } //DisplayMethodInfo
} //TypeMain

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

XNA Framework

Unterstützt in: 1.0
Anzeigen:
© 2014 Microsoft