public static void Main()
public string A {get;set;} = " hey man";
public string B {get;set;} = "Hello there! ";
public string C {get;set;} = "Hi.";
public string D {get;set;} = " ";
public int E {get;set;} = 32;
public int F {get;set;} = 64;
public override string ToString()
var sb = new StringBuilder();
sb.Append(nameof(MyObject) + ": { ");
foreach (var item in this.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
sb.Append("[" + item.Name + ": \"" + item?.GetValue(this, null) + "\"] ");
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class DontTrimAttribute : Attribute
public static class TrimExtension
public static void TrimStrings(this object o)
foreach (var item in o?.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
if (!Attribute.IsDefined(item, typeof(DontTrimAttribute)) && item.PropertyType == typeof(string))
item.SetValue(o, (item.GetValue(o, null) as string)?.Trim(), null);