Is it possible in C# to create a System.Collections.Generic.Dictionary where TKey is unconditioned class and TValue
I think ASP.NET MVC didn't exit at the time this question was made. It does convert anonymous objects to dictionaries internally.
Just take a look at the HtmlHelper class, for example. The method that translates objects to dictionaries is the AnonymousObjectToHtmlAttributes. It it's specifc to MVC and returns an RouteValueDictionary, however.
If you want something more generic, try this:
public static IDictionary AnonymousObjectToDictionary(object obj)
{
return TypeDescriptor.GetProperties(obj)
.OfType()
.ToDictionary(
prop => prop.Name,
prop => prop.GetValue(obj)
);
}
One intersting advatages of this implementation is that it returns an empty dictionary for null objects.
And here's one generic version:
public static IDictionary AnonymousObjectToDictionary(
object obj, Func