Type conversion (From object to Nullable, Enum, Custom TypeConverter)
While building our Commerce Server 2007 solution it made sense to wrap the LineItem class to easily access the weakly typed indexer accessible properties (which are exposed as object).
Because the underlying datatype could have been anything (ref/value type, nullable, custom) I created a helper method that accepts an object value and returns the value casted to the appropriate type. The can obviously be used in many contexts so I thought I’d share.
public static T ConvertTo(object value){ // check for value = null, thx alex
Type t = typeof(T);
// do we have a nullable type? if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) { NullableConverter nc = new NullableConverter(t); t = nc.UnderlyingType; }
if (t.IsEnum) // if enum use parse return (T)Enum.Parse(t, value.ToString(), false); else { // if we have a custom type converter then use it TypeConverter td = TypeDescriptor.GetConverter(t); if (td.CanConvertFrom(value.GetType())) { return (T)td.ConvertFrom(value); } else // otherwise use the changetype return (T)Convert.ChangeType(value, t); }}
DateTime dt = TypeConversionUtility.ConvertTo(dateVal);Share on LinkedIn
Quick Share: Your custom post text has been copied to your clipboard! Click the button below to open LinkedIn's share dialog, then paste it.
💡 Tip: LinkedIn will open in a new tab. Use Ctrl+V (or Cmd+V on Mac) to paste your text.
Note: LinkedIn will show the article preview. You can add your custom text above it.