/// <summary> /// 创建委托 /// </summary> /// <returns></returns> public static Func <IDeserializerReader, JsonDeserializeSetting, int, T> Register(JsonDeserializeSetting setting) { Func <IDeserializerReader, JsonDeserializeSetting, int, T> func = null; if (caching.TryGetValue(setting, out func)) { return(func); } lock (caching) { if (caching.TryGetValue(setting, out func)) { return(func); } var customSerialierBuilder = CustomSerializationProvider.QueryCustomeDeserilizerbuilder <T>(); if (customSerialierBuilder != null) { func = customSerialierBuilder.Build(setting); caching.TryAdd(setting, func); return(func); } func = new ZzzZzDeserializerBuilder <T>().Build(setting); caching.TryAdd(setting, func); return(func); } }
/// <summary> /// 创建委托 /// </summary> /// <returns></returns> public static Action <ISerializerWriter, JsonSerializeSetting, T, byte> Register(JsonSerializeSetting setting) { Action <ISerializerWriter, JsonSerializeSetting, T, byte> action = null; if (caching.TryGetValue(setting, out action)) { return(action); } lock (caching) { if (caching.TryGetValue(setting, out action)) { return(action); } var customSerialierBuilder = CustomSerializationProvider.QueryCustomeSerilizerbuilder <T>(); if (customSerialierBuilder != null) { action = customSerialierBuilder.Build(setting); caching.TryAdd(setting, action); return(action); } action = new ZzzZzSerialierBuilder <T>().Build(setting); caching.TryAdd(setting, action); return(action); } }
public static DateTime?DateTimeParse(IDeserializerReader reader, JsonDeserializeSetting setting, string name) { IConvertMethodProvider <DateTime> customMethodProvider = CustomSerializationProvider.QueryCustomDatetimeFormat(setting.DateTimeFormat) as IConvertMethodProvider <DateTime>; if (customMethodProvider == null) { return(DateTimeMethodProvider.Default.Parse(reader, setting, reader.Read(name), true)); } return(customMethodProvider.Parse(reader, setting, reader.Read(name), true)); }
static void Main(string[] args) { CustomSerializationProvider cp = new CustomSerializationProvider(); //for test //cp.ISerializable(); //cp.ISerializationSurrogate(); //cp.SerializationCallbacks(); //cp.IDataContractSurrogate(); Console.ReadKey(); }
public static void Write(ISerializerWriter writer, JsonSerializeSetting setting, DateTime source) { if (DateTimeFormat.Default.Equals(setting.DateTimeFormat)) { ISO8601StyleDateMethodProvider.Default.Write(writer, setting, source); return; } if (DateTimeFormat.ChineseStyle.Equals(setting.DateTimeFormat)) { ChineseStyleDateMethodProvider.Default.Write(writer, setting, source); return; } if (DateTimeFormat.ISO8601Style.Equals(setting.DateTimeFormat)) { ISO8601StyleDateMethodProvider.Default.Write(writer, setting, source); return; } if (DateTimeFormat.MicrosoftStyle.Equals(setting.DateTimeFormat)) { MicrosoftStyleDateMethodProvider.Default.Write(writer, setting, source); return; } if (DateTimeFormat.RFC1123Style.Equals(setting.DateTimeFormat)) { RFC1123StyleDateMethodProvider.Default.Write(writer, setting, source); return; } IConvertMethodProvider <DateTime> customMethodProvider = CustomSerializationProvider.QueryCustomDatetimeFormat(setting.DateTimeFormat) as IConvertMethodProvider <DateTime>; if (customMethodProvider == null) { throw new ArgumentException("format is not defined"); } customMethodProvider.Write(writer, setting, source); }
/// <summary> /// 创建委托 /// </summary> /// <returns></returns> public static Func <IDeserializerReader, JsonDeserializeSetting, int, T> Register(JsonDeserializeSetting setting) { if (function != null) { return(function); } lock (locker) { if (function != null) { return(function); } var customSerialierBuilder = CustomSerializationProvider.QueryCustomeDeserilizerbuilder <T>(); if (customSerialierBuilder != null) { return(function = customSerialierBuilder.Build(setting)); } return(function = new ExceptionDeseralizerBuilder <T>().Build(setting)); } }
/// <summary> /// 进行构建 /// </summary> /// <returns></returns> public static Action <ISerializerWriter, JsonSerializeSetting, TException, byte> Register(JsonSerializeSetting setting) { if (action != null) { return(action); } lock (locker) { if (action != null) { return(action); } var customSerialierBuilder = CustomSerializationProvider.QueryCustomeSerilizerbuilder <TException>(); if (customSerialierBuilder != null) { return(action = customSerialierBuilder.Build(setting)); } return(action = new ExceptionSerialierBuilder <TException>().Build(setting)); } }
/// <summary> /// 执行builder,反射用到的 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="writer">The writer.</param> /// <param name="setting">The setting.</param> /// <param name="level"></param> /// <param name="source">The source.</param> internal static void CallCustomeBuilderInvoke <T>(ISerializerWriter writer, JsonSerializeSetting setting, T source, byte level) { var @delegate = CustomSerializationProvider.QueryCustomeSerilizerbuilder <T>().Build(setting); @delegate(writer, setting, source, level++); }