Attribute C# Tutorial

using System;
using System.Reflection;
[AttributeUsage(AttributeTargets.Class)]
public class ClassTarget : Attribute
{
  public ClassTarget()
  {
  }
}
[AttributeUsage(AttributeTargets.Method )]
public class MethodTarget : Attribute
{
  public MethodTarget()
  {
  }
}
public class MyClass
{
  [MethodTarget]
  public int MyMethod()
  {
    return 5;
  }
}
class MainClass 
{
  public static void Main(string[] args) 
  {
    ClassTarget rs;
    MethodTarget rm;
    Assembly a = Assembly.LoadFrom("MyClass");
    foreach(Type t in a.GetTypes())
    {
      rs = (ClassTarget) Attribute.GetCustomAttribute(t, typeof(ClassTarget));
      if(rs != null)
      {
        foreach(MethodInfo m in t.GetMethods())
        {
          rm = (MethodTarget) Attribute.GetCustomAttribute(m, typeof(MethodTarget));
          if(rm != null)
          {
            Object o = Activator.CreateInstance(t);
            Object[] aa = new Object[0];
            int i = (int) m.Invoke(o, aa);
          }
        }
      }
    }
  }
}