Cecil - Conseguir el definido atributos de propiedades
-
12-09-2019 - |
Pregunta
Estoy utilizando Cecil para intentar leer mis propiedades atributos:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public sealed class TraceMethodAttribute : Attribute {
public TraceMethodAttribute() {
MethodStart = true;
MethodReturn = true;
MethodMessages = true;
}
public bool MethodStart { get; set; }
public bool MethodReturn { get; set; }
public bool MethodMessages { get; set; }
}
[TraceMethod(MethodMessages = false)]
static void Main(string[] args) {
}
...
if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {
if ((bool)attribute.Fields["MethodMessages"] == true) {
EditMethodStart(assembly, method);
}
Esto es, me gustaría que este último bloque de código para comprobar cada vez que el atributo aplicado al principal, por ejemplo, tiene MethodMessages establecido en verdadero o falso. Por lo que he visto, parece que tanto attributes.Fields.Count y attributes.Properties.Count se pone a 0. ¿Por qué es?
Gracias
Solución
debería funcionar bien a través de acceso a la colección de propiedades haciendo paso a paso.
if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {
if ((bool)attribute.Properties["MethodMessages"] == true) {
EditMethodStart(assembly, method);
}
Sólo recopilado y comprobado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow