public static void SavePreference(StringBuilder sb, ref int tabLevel, string key, object obj) { if (obj == null) { WriteTag(sb, tabLevel, key, "null", null); } else if (obj is int) { WriteTag(sb, tabLevel, key, "int", obj); } else if (obj is string) { WriteTag(sb, tabLevel, key, "string", obj); } else if (obj is bool) { bool v = (bool)obj; WriteTag(sb, tabLevel, key, "bool", v ? "True" : "False"); } else if (obj is TimeSpan) { WriteTag(sb, tabLevel, key, "TimeSpan", obj); } else if (obj is IPreference) { IPreference v = (IPreference)obj; v.WriteTag(sb, ref tabLevel, key); } }