Frage

Ich versuche, Cecil zu verwenden, um die Attribute, die mit einem bestimmten Verfahren zugeordnet ist zu inspizieren. Es scheint, es zu finden, aber ich kann seinen Namen nicht mit dem folgenden Code erhalten:

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()

Ich weiß, das das Attribut muß ich meine Funktion festgelegt haben, denn wenn ich es aus der DLL entfernen, wird die zweite Zeile Code zu Null ausfallen. Was ich möchte, ist zu tun, der Lage sein, den Namen des Attributs zu erhalten. Derzeit ist die zweite Zeile Code wird wieder nur ein „Mono.Cecil.CustomAttribute“. Ich würde vermuten, es sollte ein Weg sein, ein Name (Klassentyp) Name Attribut des Erhaltens, nicht wahr?

Danke!

War es hilfreich?

Lösung

Ich hatte Probleme mit dieser beim Schreiben MoMA auch. Hier ist der Code verwendet es:

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].Constructor.DeclaringType.ToString()

Andere Tipps

Ein CustomAttribute ist eine Instanz eines System.Attribute Typ abgeleitet, so ToString() wird tun, was der Autor entschieden.

Wenn Sie Attributtypen wissen wollen, sollten Sie sich für ihre Art fragen:

typeInfo.GetCustomAttributes(false)[0].GetType().ToString() ;

Ich habe diese Eigenschaft nicht CustomAttributes gesehen Sie verwenden, so habe ich eher die Methode MemberInfo.GetCustomAttributes(bool), die ich immer verwenden.

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