title: Invalid Cast Exception: Unable to cast object of type '__DynamicallyInvokableAttribute' to type 'BugFixApplication.DeBugInfo'
body: <p>I tried to type cast Attribute variable to DeBugInfo type. </p>
  
  <p>Here's the code in Main function in class ExecuteRectangle:</p>
  
  <pre><code>class ExecuteRectangle
  {
      static void Main(string[] args)
      {
          Rectangle r = new Rectangle(4.5, 7.5);
          r.Display();
          Type type = typeof(Rectangle);
          //iterating through the attribtues of the Rectangle class
          foreach (Object attributes in type.GetCustomAttributes(false))
          {
              DeBugInfo dbi = (DeBugInfo)attributes;
              if (null != dbi)
              {
                  Console.WriteLine("Bug no: {0}", dbi.BugNo);
                  Console.WriteLine("Developer: {0}", dbi.Developer);
                  Console.WriteLine("Last Reviewed: {0}",
                       dbi.LastReview);
                  Console.WriteLine("Remarks: {0}", dbi.Message);
              }
          }
  
          //iterating through the method attribtues
          foreach (MethodInfo m in type.GetMethods())
          {
              foreach (Attribute a in m.GetCustomAttributes(true))
              {
                  DeBugInfo dbi = (DeBugInfo)a;
                  if (null != dbi)
                  {
                      Console.WriteLine("Bug no: {0}, for Method: {1}",
                            dbi.BugNo, m.Name);
                      Console.WriteLine("Developer: {0}", dbi.Developer);
                      Console.WriteLine("Last Reviewed: {0}",
                            dbi.LastReview);
                      Console.WriteLine("Remarks: {0}", dbi.Message);
                  }
              }
          }
          Console.ReadLine();
      }
  }
  </code></pre>
  
  <p>Here's the DeBugInfo class:</p>
  
  <pre><code>[AttributeUsage(AttributeTargets.Class |
  AttributeTargets.Constructor |
  AttributeTargets.Field |
  AttributeTargets.Method |
  AttributeTargets.Property,
  AllowMultiple = true)]
  
  public class DeBugInfo : Attribute
  {
      private int bugNo;
      private string developer;
      private string lastReview;
      public string message;
  
      public DeBugInfo(int bg, string dev, string d)
      {
          this.bugNo = bg;
          this.developer = dev;
          this.lastReview = d;
      }
  
      public int BugNo
      {
          get
          {
              return bugNo;
          }
      }
      public string Developer
      {
          get
          {
              return developer;
          }
      }
      public string LastReview
      {
          get
          {
              return lastReview;
          }
      }
      public string Message
      {
          get
          {
              return message;
          }
          set
          {
              message = value;
          }
      }
  }
  </code></pre>
  
  <p>And the class Rectangle:</p>
  
  <pre><code>  [DeBugInfo(45, "Zara Ali", "12/8/2012",
   Message = "Return type mismatch")]
  [DeBugInfo(49, "Nuha Ali", "10/10/2012",
   Message = "Unused variable")]
  class Rectangle
  {
      //member variables
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
          length = l;
          width = w;
      }
      [DeBugInfo(55, "Zara Ali", "19/10/2012",
       Message = "Return type mismatch")]
      public double GetArea()
      {
          return length * width;
      }
      [DeBugInfo(56, "Zara Ali", "19/10/2012")]
      public void Display()
      {
          Console.WriteLine("Length: {0}", length);
          Console.WriteLine("Width: {0}", width);
          Console.WriteLine("Area: {0}", GetArea());
      }
  }
  </code></pre>
  
  <p>When I run this code, I get the desired output which is this:</p>
  
  <pre><code>Length: 4.5
  Width: 7.5
  Area: 33.75
  Bug No: 49
  Developer: Nuha Ali
  Last Reviewed: 10/10/2012
  Remarks: Unused variable
  Bug No: 45
  Developer: Zara Ali
  Last Reviewed: 12/8/2012
  Remarks: Return type mismatch
  Bug No: 55, for Method: GetArea
  Developer: Zara Ali
  Last Reviewed: 19/10/2012
  Remarks: Return type mismatch
  Bug No: 56, for Method: Display
  Developer: Zara Ali
  Last Reviewed: 19/10/2012
  Remarks: 
  </code></pre>
  
  <p>But I also get this unhandled exception error and program crashes:</p>
  
  <pre><code>Unhandled Exception: System.InvalidCastException: Unable to cast object of type       
  '__DynamicallyInvokableAttribute' to type 'BugFixApplication.DeBugInfo' at 
  BugFixApplication.ExecuteRectangle.Main(string[] args)
  </code></pre>
  
  <p>I don't know why I get this exception nor how I can fix this. </p>