public static IValueSerializerProviderBuilder <TPacketWriter> Set <TPacketWriter, TValue, TResult>(
     this IValueSerializerProviderBuilder <TPacketWriter> Builder,
     Func <TValue, IFieldOption, TResult> Serialize,
     string Channel = null,
     string Field   = null
     ) where TPacketWriter : DictPacketWriter <TResult>
 {
     Builder.Set <TPacketWriter, TValue>(
         (v, w, f) => w.Write(Serialize(v, f), f),
         Channel,
         Field
         );
     return(Builder);
 }
 public static IValueSerializerProviderBuilder <TPacketWriter> Set <TPacketWriter, TValue>(
     this IValueSerializerProviderBuilder <TPacketWriter> Builder,
     Action <TValue, TPacketWriter, IFieldOption> Serialize,
     string Channel = null,
     string Field   = null
     )
 {
     Builder.Set(
         new FuncValueSerializer <TPacketWriter, TValue> {
         FuncSerialize = Serialize
     },
         Channel,
         Field
         );
     return(Builder);
 }
 public static IValueSerializerProviderBuilder <TPacketWriter> SetToString <TPacketWriter, TValue>(
     this IValueSerializerProviderBuilder <TPacketWriter> Builder,
     string Format  = null,
     string Channel = null,
     string Field   = null
     ) where TPacketWriter : DictPacketWriter <string>
 {
     if (Format == null)
     {
         Builder.Set <TPacketWriter, TValue, string>((v, f) => v.ToString(), Channel, Field);
     }
     else
     {
         Builder.Set <TPacketWriter, TValue, string>((v, f) => string.Format(Format, v), Channel, Field);
     }
     return(Builder);
 }
        public static IValueSerializerProviderBuilder <TPacketWriter> SetStringValueDeserializers <TPacketWriter>(
            this IValueSerializerProviderBuilder <TPacketWriter> Builder
            ) where TPacketWriter : DictPacketWriter <string>
        {
            Builder.SetToString <TPacketWriter, sbyte>();
            Builder.SetToString <TPacketWriter, byte>();
            Builder.SetToString <TPacketWriter, short>();
            Builder.SetToString <TPacketWriter, ushort>();
            Builder.SetToString <TPacketWriter, int>();
            Builder.SetToString <TPacketWriter, uint>();
            Builder.SetToString <TPacketWriter, long>();
            Builder.SetToString <TPacketWriter, ulong>();
            Builder.SetToString <TPacketWriter, float>();
            Builder.SetToString <TPacketWriter, decimal>();
            Builder.SetToString <TPacketWriter, double>();

            return(Builder);
        }