Encontre métodos que tenham atributo personalizado usando reflexão
Eu tenho um atributo personalizado:
public class MenuItemAttribute : Attribute
{
}
e uma classe com alguns métodos:
public class HelloWorld
{
[MenuItemAttribute]
public void Shout()
{
}
[MenuItemAttribute]
public void Cry()
{
}
public void RunLikeHell()
{
}
}
Como posso obter apenas os métodos decorados com o atributo personalizado?
Até agora, eu tenho o seguinte:
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();
}
}
}
O que eu preciso agora é obter o nome do método, o tipo de retorno e os parâmetros que ele aceita.