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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top