diff --git a/MBS.Framework/StringExtensions.cs b/MBS.Framework/StringExtensions.cs
index 30fd8b3..7e26218 100644
--- a/MBS.Framework/StringExtensions.cs
+++ b/MBS.Framework/StringExtensions.cs
@@ -20,5 +20,89 @@ namespace MBS.Framework
}
return retval;
}
+
+ ///
+ /// Parses the given with the specified 's public static Parse() method. If no such method exists,
+ /// returns .
+ ///
+ /// The parsed from the given .
+ /// The value to attempt to parse.
+ /// Type.
+ public static object Parse(this string value, Type type)
+ {
+ return Parse(value, type, value);
+ }
+ ///
+ /// Parses the given with the specified 's public static Parse() method. If no such method exists,
+ /// returns .
+ ///
+ /// The parse.
+ /// Value.
+ /// Type.
+ /// Default value.
+ public static object Parse(this string value, Type type, object defaultValue)
+ {
+ System.Reflection.MethodInfo miParse = type.GetMethod("Parse", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static, null, System.Reflection.CallingConventions.Any, new Type[] { typeof(string) }, null);
+ if (miParse != null)
+ {
+ // the given type implements a public static Parse(String) method, so use it
+ return miParse.Invoke(null, new object[] { value });
+ }
+ return defaultValue;
+ }
+ public static T Parse(this string value)
+ {
+ return (T)Parse(value, typeof(T));
+ }
+
+
+ ///
+ /// Parses the given with the specified 's public static Parse() method. If no such method exists,
+ /// returns .
+ ///
+ /// The parsed from the given .
+ /// The value to attempt to parse.
+ /// Type.
+ public static bool TryParse(this string value, Type type, out object output)
+ {
+ return TryParse(value, type, value, out output);
+ }
+ ///
+ /// Parses the given with the specified 's public static Parse() method. If no such method exists,
+ /// returns .
+ ///
+ /// The parse.
+ /// Value.
+ /// Type.
+ /// Default value.
+ public static bool TryParse(this string value, Type type, object defaultValue, out object output)
+ {
+ System.Reflection.MethodInfo miParse = type.GetMethod("TryParse", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static, null, System.Reflection.CallingConventions.Any, new Type[] { typeof(string), type }, null);
+ if (miParse != null)
+ {
+ // the given type implements a public static Parse(String) method, so use it
+ object retval = null;
+ bool ret = (bool)miParse.Invoke(null, new object[] { value, retval });
+ if (ret)
+ {
+ output = retval;
+ return ret;
+ }
+ }
+ output = null;
+ return false;
+ }
+ public static bool TryParse(this string value, out T output)
+ {
+ object retval = null;
+ bool ret = TryParse(value, typeof(T), out retval);
+ if (ret)
+ {
+ output = (T)retval;
+ return ret;
+ }
+ output = default(T);
+ return false;
+ }
}
}