private static Func <string, string> GetNameMutator(NameHandling nameHandling) { switch (nameHandling) { case NameHandling.Ordinal: return(StringMutator.Original); case NameHandling.CamelCase: return(StringMutator.ToCamelCase); case NameHandling.SnakeCase: return(StringMutator.ToSnakeCase); } throw new ArgumentException($"Invalid name handling selected. Expected one of {string.Join(",", Enum.GetNames(typeof(NameHandling)))}"); }
public NodaTimeResolver( IDateTimeZoneProvider dateTimeZoneProvider, NameHandling nameHandling = NameHandling.Ordinal, bool isoIntervals = false, bool isoDateIntervals = false, bool normalizedIsoPeriods = false) { _resolverCache = new Dictionary <Type, IJsonFormatter> { { typeof(ZonedDateTime), NodaFormatters.CreateZonedDateTimeFormatter(dateTimeZoneProvider) }, { typeof(ZonedDateTime?), NodaFormatters.CreateNullableZonedDateTimeFormatter(dateTimeZoneProvider) }, { typeof(DateTimeZone), NodaFormatters.CreateDateTimeZoneFormatter(dateTimeZoneProvider) }, { typeof(Interval), isoIntervals ? NodaFormatters.IsoIntervalFormatter : NodaFormatters.CreateIntervalFormatter(nameHandling) }, { typeof(Interval?), NodaFormatters.NullableIntervalFormatter }, { typeof(DateInterval), isoDateIntervals ? NodaFormatters.IsoDateIntervalFormatter : NodaFormatters.CreateDateIntervalFormatter(nameHandling) }, { typeof(Period), normalizedIsoPeriods ? NodaFormatters.NormalizingIsoPeriodFormatter : NodaFormatters.RoundtripPeriodFormatter } }; }
/// <summary> /// Formatter for intervals. This must be used in a serializer which also has an instant converter. /// </summary> public static IJsonFormatter <Interval> CreateIntervalFormatter(NameHandling nameHandling) => new NodaIntervalFormatter(GetNameMutator(nameHandling));