public override void SetValue(string valAsString) { // Get the generic type of the setter Type genericType = setter.GetType().GetGenericArguments()[0]; // Find the 'Parse' method on that type System.Reflection.MethodInfo parser = null; try { parser = genericType.GetMethod("Parse", new Type[] { typeof(String) }); } catch (Exception e) { // m_log.ErrorFormat("{0} Exception getting parser for type '{1}': {2}", LogHeader, genericType, e); parser = null; } if (parser != null) { // Parse the input string try { T setValue = (T)parser.Invoke(genericType, new Object[] { valAsString }); // Store the parsed value setter(setValue); // // m_log.DebugFormat("{0} Parameter {1} = {2}", LogHeader, name, setValue); } catch { // m_log.ErrorFormat("{0} Failed parsing parameter value '{1}' as type '{2}'", LogHeader, valAsString, genericType); } } else { // m_log.ErrorFormat("{0} Could not find parameter parser for type '{1}'", LogHeader, genericType); } }