Tengo un atributo personalizado:Encontrar métodos que tienen atributo personalizado que utilizan la reflexión
public class MenuItemAttribute : Attribute
{
}
y una clase con unos métodos:
public class HelloWorld
{
[MenuItemAttribute]
public void Shout()
{
}
[MenuItemAttribute]
public void Cry()
{
}
public void RunLikeHell()
{
}
}
¿Cómo puedo obtener sólo los métodos que están decoradas con el atributo personalizado?
Hasta ahora, tengo unas pocas cosas:
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();
}
}
}
Lo que necesito ahora es conseguir que el nombre del método, el tipo de retorno, así como los parámetros que acepta.
lo estoy haciendo culo-sobre-frontal aquí? porque en este momento busco todos los atributos y luego trato de obtener el método asociado –
de forma estrangulada con mi código obtengo 2 resultados, pero con su ejemplo obtengo 0 ..... –
Lo probé con sus clases; esto funciona para mi. ¿Estás buscando el ensamblaje correcto? – SLaks