Frage

Ich verwende Cecil, um meine Attribute Eigenschaften zu lesen:

[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);
  }

Dies ist, ich möchte, dass dieser letzte Codeblock überprüft wird, wenn das auf Main angewendete Attribut beispielsweise MethodMessages auf true oder false festgelegt hat. Nach dem, was ich gesehen habe, scheint es sowohl Attribute

Vielen Dank

War es hilfreich?

Lösung

Sollte gut funktionieren, indem Sie auf die Propertiessammlung nach Indexer zugreifen.

if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {         
  if ((bool)attribute.Properties["MethodMessages"] == true) {
        EditMethodStart(assembly, method);
  }

Ich habe es gerade zusammengestellt und überprüft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top