/// <summary> /// Записать поле объекта, если оно не равно значению по умолчанию /// </summary> public void AddEnumField <T>(string name, T?value) where T : struct { if (value == null) { return; } AddFieldCore(name, EnumPrintFormatter.Print(value.Value)); }
/// <summary> /// Записать поле объекта, если оно не равно значению по умолчанию /// </summary> public void AddEnumField <T>(string name, T value) where T : struct { if (Equals(value, default(T))) { return; } AddFieldCore(name, EnumPrintFormatter.Print(value)); }
internal static string FormatValue(string format, object arg, IFormatProvider formatProvider) { // Значения null форматируются как "null" if (ReferenceEquals(arg, null)) { return(NullStr); } var printable = arg as IPrintable; if (!ReferenceEquals(printable, null)) { var result = Format(printable); var reusable = printable as IReusable; reusable?.Release(); return(result); } var formattedValue = TryPrintKnownType(arg, format); if (formattedValue != null) { return(formattedValue); } // enum-ы выводятся в лог единообразно if (arg is Enum) { return(EnumPrintFormatter.Print(arg.GetType(), arg)); } // IFormattable-объекты выводятся в лог как есть, с форматированием var formattable = arg as IFormattable; if (formattable != null) { return(formattable.ToString(format, formatProvider)); } // Все прочее выводится как есть return(arg.ToString()); }
/// <summary> /// Записать поле объекта, даже если оно равно значению по умолчанию /// </summary> public void AddEnumFieldRequired <T>(string name, T value) where T : struct { AddFieldCore(name, EnumPrintFormatter.Print(value)); }