Hello again. From what I've seen here
http://evain.net/conf/Cecil-MonoMeeting07.pdf, there seems to really exist a
bug in cecil with attributes, as the following code does not work:
// asm is an AssemblyDefinition ...
foreach (CustomAttribute attribute in asm.CustomAttributes) {
Console.WriteLine (
attribute.Constructor.DeclaringType.Name);
foreach (object p in attribute.ConstructorParameters) {
Console.WriteLine (“param: {0}”, p);
}
}
// AssemblyTitleAttribute
// param: Mono.Cecil
// AssemblyDescriptionAttribute
// param: Library for reading and writing CIL images
// ...
attribute.ConstructorParameters.Count seems to be always = 0.
Any help or comment?
On Fri, Aug 7, 2009 at 6:17 PM, Jorge Branco
<[email protected]>wrote:
>
> Hello. I am using Cecil to try to read my attributes properties:
>
> [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);
> }
>
> This is, I'd like this last block of code to check whenever the
> attribute applied to Main, for example, has MethodMessages set to true
> or false. From what I've seen, it seems like both
> attributes.Fields.Count and attributes.Properties.Count is set to 0.
> Why is it?
>
> Thanks
> >
>
--~--~---------~--~----~------------~-------~--~----~
--
mono-cecil
-~----------~----~----~----~------~----~------~--~---