[Mono-dev] Bug?: Mcs Custom Attribute Handling

Norbert Berzen norbert at spice.gia.rwth-aachen.de
Tue Apr 4 10:27:04 EDT 2006


Hi all,

After compiling 'mono-tools-1.1.11' by 'mcs-1.1.14' I ran into some
trouble during execution of 'browser.exe'. IMHO recent version(s) of mcs
(1.1.14 and may be earlier) introduce a bug custom attribute handling.

E.g.: In a declaration of the form

class SomeClass {
  [SomeCustomAttribute] int x, y;
}

the field 'x' does not have any 'SomeCustomAttribute' attached to it,
but the field 'y' does have two 'SomeCustomAttribute' attached to it.
One may proof by compiling the following small snippet.

---<cut here>---<cut here>---<cut here>---<cut here>---<cut here>---

using System;
using System.Reflection;

[AttributeUsage(AttributeTargets.Field)]
class SomeCustomAttribute : Attribute {
  public SomeCustomAttribute ()
  {
  }
}

class MainClass {

  // Here, the custom attribute is attached correctly
  [SomeCustomAttribute]
  public int a;

  // Here, the custom attribute attachment has a flaw
  [SomeCustomAttribute]
  public int x, y;

  public static void Main ()
  {
    Type t = typeof (MainClass);
    FieldInfo[] fia = t.GetFields();

    foreach (FieldInfo fi in fia) {
      object[] ca = fi.GetCustomAttributes(false);
      System.Console.WriteLine ("Field: {0} [{1}]", fi.Name, ca.Length);
      foreach (Attribute a in ca)
        System.Console.WriteLine ("  Attribute: {0}", a);
    }
  }

}

---<cut here>---<cut here>---<cut here>---<cut here>---<cut here>---


-- 
Norbert



More information about the Mono-devel-list mailing list