Reflection C#

using System.Collections.Generic;
using System.ComponentModel;
namespace jQueryBuddy.Utilities
{
    public class ReflectionUtilities
    {
        public sealed class PropertyValue
        {
            public string Name { get; set; }
            public object Value { get; set; }
        }
        /// 
        /// Given an anonymous type, GetProperties() will extract all
        /// the property names and values defined on the type and return
        /// them in a IEnumerable of strongly typed PropertyValue.
        /// 

        /// 
        /// 
        public static IEnumerable GetProperties(object o)
        {
            if (o == null)
                yield break;
            var props = TypeDescriptor.GetProperties(o);
            foreach (PropertyDescriptor prop in props)
            {
                var val = prop.GetValue(o);
                if (val == null) 
                    continue;
                yield return new PropertyValue {Name = prop.Name, Value = val};
            }
        }
    }
}