Reflection C#

using System;
using System.Reflection;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class Creator : System.Attribute {
    public Creator(string name, string date) {
        this.name = name;
        this.date = date;
        version = 0.1;
    }
    public void Dump() {
        Console.WriteLine("Name {0}", name);
        Console.WriteLine("Date {0}", date);
        Console.WriteLine("Version {0}", version);
    }
    string date;
    string name;
    public double version;
}
[Creator("A", "01/01/2008", version = 1.1)]
class ATestClass1 {
    ATestClass1() {
    }
}
[Creator("B", "04/01/2008", version = 1.5)]
class ATestClass2 {
    ATestClass2() {
    }
}
[Creator("C", "12/31/2008", version = 2.5)]
class ATestClass3 {
    ATestClass3() {
    }
}
class MainClass {
    public static void PrintAttributeInformation(Type classType) {
        Console.WriteLine("Attributes for class {0}", classType);
        object[] attr = classType.GetCustomAttributes(true);
        foreach (object o in attr) {
            Console.WriteLine("Attribute {0}", o);
            if (o is Creator)
                ((Creator)o).Dump();
        }
    }
    public static void Main() {
        PrintAttributeInformation(typeof(ATestClass1));
        PrintAttributeInformation(typeof(ATestClass2));
        PrintAttributeInformation(typeof(ATestClass3));
    }
}