/// <summary>
        /// 注册时间类型的转换方法提供者
        /// </summary>
        /// <param name="format">时间格式化</param>
        /// <param name="methodProvider">转换方法提供者</param>
        public static void RegisterCustomDatetimeFormat(DateTimeFormat format, IConvertMethodProvider <DateTime> methodProvider)
        {
            if (methodProvider == null)
            {
                throw new ArgumentNullException("methodProvider");
            }

            datetimeConvertMethod[format] = methodProvider;
        }
示例#2
0
        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));
        }
        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);
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrimitiveEnumerableProvider{T}"/> class.
 /// </summary>
 /// <param name="methodProvider">The method provider.</param>
 public PrimitiveEnumerableProvider(IConvertMethodProvider <T> methodProvider)
 {
     this.MethodProvider = methodProvider;
 }