Reflection C#

using System;
using System.Reflection;
public enum Animal {
    Dog = 1,
    Cat,
    Bird,
}
public class AnimalTypeAttribute : Attribute {
    public AnimalTypeAttribute(Animal pet) {
        thePet = pet;
    }
    protected Animal thePet;
    public Animal Pet {
        get { return thePet; }
        set { thePet = value; }
    }
}
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}
    [AnimalType(Animal.Cat)]
    public void CatMethod() {}
    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}
class DemoClass {
    static void Main(string[] args) {
        AnimalTypeTestClass testClass = new AnimalTypeTestClass();
        Type type = testClass.GetType();
        foreach(MethodInfo mInfo in type.GetMethods()) {
            foreach (Attribute attr in
                Attribute.GetCustomAttributes(mInfo)) {
                if (attr.GetType() == typeof(AnimalTypeAttribute))
                    Console.WriteLine(mInfo.Name);
                    Console.WriteLine(((AnimalTypeAttribute)attr).Pet);
            }
        }
    }
}