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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code ist komplett falsch.
Sie Durchlaufen alle Typ, dass das Attribut, das finden nicht alle Arten.
Müssen Sie eine Schleife durch jede Methode für jeden Typ und prüfen Sie, ob es ist Ihr Attribut.
Beispiel:
InformationsquelleAutor der Antwort SLaks
InformationsquelleAutor der Antwort JordanBean