public static void SetupBondJson( out Action <object, ChunkedMemoryStream> serialize, out Func <ChunkedMemoryStream, Type, object> deserialize) { var serializers = new Dictionary <Type, Bond.Serializer <SimpleJsonWriter> >(); var deserializers = new Dictionary <Type, Bond.Deserializer <SimpleJsonReader> >(); serialize = (obj, stream) => { var jsonWriter = new SimpleJsonWriter(stream); var type = obj.GetType(); Bond.Serializer <SimpleJsonWriter> serializer; if (!serializers.TryGetValue(type, out serializer)) { serializers[type] = serializer = new Bond.Serializer <SimpleJsonWriter>(type); } serializer.Serialize(obj, jsonWriter); jsonWriter.Flush(); }; deserialize = (stream, type) => { var reader = new SimpleJsonReader(stream); Bond.Deserializer <SimpleJsonReader> deserializer; if (!deserializers.TryGetValue(type, out deserializer)) { deserializers[type] = deserializer = new Bond.Deserializer <SimpleJsonReader>(type); } return(deserializer.Deserialize(reader)); }; }
public static void SetupBondBinary( out Action <object, ChunkedMemoryStream> serialize, out Func <ChunkedMemoryStream, Type, object> deserialize) { var serializers = new Dictionary <Type, Bond.Serializer <FastBinaryWriter <OutputStream> > >(); var deserializers = new Dictionary <Type, Bond.Deserializer <FastBinaryReader <InputStream> > >(); serialize = (obj, stream) => { var output = new OutputStream(stream, 512); var writer = new FastBinaryWriter <OutputStream>(output); Bond.Serializer <FastBinaryWriter <OutputStream> > serializer; var type = obj.GetType(); if (!serializers.TryGetValue(type, out serializer)) { serializers[type] = serializer = new Bond.Serializer <FastBinaryWriter <OutputStream> >(type); } serializer.Serialize(obj, writer); output.Flush(); }; deserialize = (stream, type) => { var input = new InputStream(stream, 512); var reader = new FastBinaryReader <InputStream>(input); Bond.Deserializer <FastBinaryReader <InputStream> > deserializer; if (!deserializers.TryGetValue(type, out deserializer)) { deserializers[type] = deserializer = new Bond.Deserializer <FastBinaryReader <InputStream> >(type); } return(deserializer.Deserialize(reader)); }; }