Suchen Sie nach Methoden mit benutzerdefiniertem Attribut mithilfe der Reflektion

Habe ich ein benutzerdefiniertes Attribut:

public class MenuItemAttribute : Attribute
{
}

und eine Klasse mit ein paar Methoden:

public class HelloWorld
{
    [MenuItemAttribute]
    public void Shout()
    {
    }

    [MenuItemAttribute]
    public void Cry()
    {
    }

    public void RunLikeHell()
    {
    }
}

Wie bekomme ich nur die Methoden, die dekoriert sind mit dem benutzerdefinierten Attribut?

Bisher habe ich dieses:

string assemblyName = fileInfo.FullName;
byte[] assemblyBytes = File.ReadAllBytes(assemblyName);
Assembly assembly = Assembly.Load(assemblyBytes);

foreach (Type type in assembly.GetTypes())
{
     System.Attribute[] attributes = System.Attribute.GetCustomAttributes(type);

     foreach (Attribute attribute in attributes)
     {
         if (attribute is MenuItemAttribute)
         {
             //Get me the method info
             //MethodInfo[] methods = attribute.GetType().GetMethods();
         }
     }
}

Was ich jetzt brauchen, ist, um den Namen der Methode, dem Rückgabetyp, sowie die Parameter, die er akzeptiert.

InformationsquelleAutor der Frage stoic | 2010-08-12

Schreibe einen Kommentar