Get all static instances of a method contained within itself
===

I have a class that is set up like this:

    public class Strategy
    {
        public readonly string Name;
        public readonly int Age;

        public Strategy(string Name, int Age)
        {
            this.Name = Name;
            this.Age = Age;
        }

        public static readonly Strategy CoolStrategy = new Strategy("Super Awesome", 24);
        public static readonly Strategy LameStrategy = new Strategy("Work Harder!", 14);
    }

I want to be able to use an extension where I could say something like this:

    Strategy[] CurrentStrategies = typeof(Strategy).GetStaticFields<Strategy>();

This would allow me to just add instances into the class and have places else where be able to get an array.

I have used the following extension in the past to get an array of static fields from a static class:

    public static class Extensions
    {
        public static T[] GetStaticFields<T>(this Type source)
            where T : class
        {
            List<T> Fields = new List<T>();

            FieldInfo[] StaticFields = source.GetFields(BindingFlags.Public | BindingFlags.Static);

            for (int i = 0; i < StaticFields.Length; i++)
            {
                if (StaticFields[i].GetValue(null) is T)
                {
                    Fields.Add(StaticFields[i].GetValue(null) as T);
                }
            }

            return Fields.ToArray();
        }
    }

But in this instance, when it gets to the "GetValue(null)" part, it throws an exception saying that it refers to an instance that does not exist.

Any suggestions??

- William