internal static TEnum ToEnum <TEnum, TUnder>(object obj) { if (obj is string) { var str = obj.ToString(); #if SILVERLIGHT return((TEnum)EnumSL.Parse(typeof(TEnum), str)); #else return((TEnum)Enum.Parse(typeof(TEnum), str)); #endif } #if SILVERLIGHT return((TEnum)ConvertSL.ChangeType(obj, typeof(TUnder))); #else return((TEnum)Convert.ChangeType(obj, typeof(TUnder))); #endif }
static private object ConvertToEnum(object value, Type typeFrom, Type typeTo) { if (!typeFrom.IsEnum) { if (typeFrom == typeof(string)) { #if SILVERLIGHT return(EnumSL.Parse(typeTo, value.ToString())); #else return(Enum.Parse(typeTo, value.ToString())); #endif } } #if SILVERLIGHT return(Enum.ToObject(typeTo, ConvertSL.ChangeType(value, Enum.GetUnderlyingType(typeTo)))); #else return(Enum.ToObject(typeTo, Convert.ChangeType(value, Enum.GetUnderlyingType(typeTo)))); #endif }