internal DataKind( string name, SerializerToJWriter internalSerializer, DeserializerFromJReader internalDeserializer) { _name = name; _internalSerializer = internalSerializer; _internalDeserializer = internalDeserializer; _serializer = item => { var w = JWriter.New(); if (item.Item is null) { var obj = w.Object(); obj.Name("version").Int(item.Version); obj.Name("deleted").Bool(true); obj.End(); } else { internalSerializer(item.Item, w); } return(w.GetString()); }; _deserializer = s => { var r = JReader.FromString(s); return(_internalDeserializer(ref r)); }; }
/// <summary> /// Constructor for use in testing. /// </summary> /// <remarks> /// Application code will not create <see cref="DataKind"/> instances; the SDK maintains /// its own instances for the storable data types that it uses. /// </remarks> /// <param name="name">value for the <c>Name</c> property</param> /// <param name="serializer">function to convert an item to a serialized string form</param> /// <param name="deserializer">function to convert an item from a serialized string form</param> public DataKind( string name, Func <ItemDescriptor, string> serializer, Func <string, ItemDescriptor> deserializer) { _name = name; _serializer = serializer; _deserializer = deserializer; _internalSerializer = null; _internalDeserializer = null; }