private static bool SetMemberValue <T> ( T target , MemberInfo member , string settingValueText ) where T : new() { var r = false; Type memberValueType = null; if (member.MemberType == MemberTypes.Field) { var fieldInfo = (FieldInfo)member; memberValueType = fieldInfo.FieldType; } else if (member.MemberType == MemberTypes.Property) { var propertyInfo = (PropertyInfo)member; memberValueType = propertyInfo.PropertyType; } if (memberValueType.IsNullableType()) { memberValueType = memberValueType .GetNullableUnderlyingType(); } var memberName = member.Name; var memberSetter = DynamicExpressionTreeHelper .CreateMemberSetter //<T, object> (typeof(T), memberName); var methodInfo = memberValueType .GetMethod ( "Parse" , new Type[] { typeof(string) } ); if (methodInfo != null) { var delegateInvoker = DynamicExpressionTreeHelper .CreateDelegate ( methodInfo ); var settingValue = delegateInvoker .DynamicInvoke(settingValueText); memberSetter(target, settingValue); } else { memberSetter(target, (object)settingValueText); } r = true; return(r); }