/// <summary>
/// This does NOT go into sub objects, only the top level object
/// i.e. if you have a class with a string field, it will trim that string field value
/// but not trim any string fields on sub-objects inside the containing class
/// </summary>
/// <param name="currentObject"></param>
public static void SafeTrimAllStringFields(this object currentObject)
{
if (currentObject == null)
{
return;
}
var type = currentObject.GetType();
var stringFields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Where(f => f.FieldType == typeof(string));
foreach (var field in stringFields)
{
var value = (string)field.GetValue(currentObject);
if (value != null)
{
field.SetValue(currentObject, value.SafeTrim());
}
}
}
}
public static string SafeTrim(this string value)
{
return value == null ? string.Empty : value.Trim();
}