Mono.Cecil - ¿Cómo obtener los atributos personalizados
-
11-09-2019 - |
Pregunta
Estoy tratando de utilizar Cecil para inspeccionar los atributos asociados a un determinado método. Parece encontrarlo, pero no puede conseguir su nombre usando el siguiente código:
AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()
Sé que esto debe ser el atributo He puesto mi función, porque cuando lo quito de la DLL, la segunda línea de código va a salir a nulo. Lo que me gustaría hacer es ser capaz de obtener el nombre del atributo. Actualmente la segunda línea de código devolverá sólo un "Mono.Cecil.CustomAttribute". Supongo que debe haber una manera de hacer que el nombre (tipo de clase) el nombre de un atributo, ¿verdad?
Gracias!
Solución
he tenido problemas con esto al escribir MoMA también. Aquí está el código que utiliza:
AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].Constructor.DeclaringType.ToString()
Otros consejos
A CustomAttribute
es una instancia de un tipo de System.Attribute
derivados, por lo ToString()
hará lo que el autor decidió.
Si usted quiere saber acerca de los tipos de atributos que debe pedir su tipo:
typeInfo.GetCustomAttributes(false)[0].GetType().ToString() ;
No he visto este CustomAttributes
propiedad que está utilizando, así que en vez utilizado el MemberInfo.GetCustomAttributes(bool)
método que siempre uso.