C# extension method to convert an object into a Dictionary type; using the property names as keys, and property values as each key value.

internal static class ObjectExtensions
{
    public static IDictionary<string, object> ToDictionary(this object @object)
    {
        var dictionary = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);

        if (@object != null)
        {
            foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(@object))
            {
                dictionary.Add(property.Name, property.GetValue(@object));
            }
        }

        return dictionary;
    }
}

//
// Example Usage:
// ----------------------------------------------------------------------------

internal class Person
{
    public string FirstName { get; set; }
    public string LastName {get; set; }
}

internal class Program
{
    private static void Main(string[] args)
    {
        var person = new Person { FirstName = "Jon", LastName = "LaBelle" };
        var dictionary = person.ToDictionary();

        foreach (var item in dictionary)
        {
            Console.WriteLine("{0}: {1}", item.Key, item.Value);
        }

        // Outputs...
        // FirstName: Jon
        // LastName: LaBelle
    }
}