public static object ConvertObject (XamlParser parser, XamlObjectElement element, Type dest_type, TypeConverter converter, string prop_name, object val)
{
// Should i return default(T) if property.PropertyType is a valuetype?
if (val == null)
return val;
if (dest_type.IsAssignableFrom (val.GetType ()))
return val;
if (dest_type == typeof (string))
return val.ToString ();
if (converter == null)
converter = new XamlTypeConverter (parser, element, prop_name, dest_type);
if (!converter.CanConvertFrom (val.GetType ()))
throw new Exception (string.Format ("type converter {0} can't convert from type {1} destination type: {2}", converter.GetType (), val.GetType (), dest_type));
return converter.ConvertFrom (null, Helper.DefaultCulture, val);
}