internal static Document Serialize <T>(TypedDocument <T> typedDoc) { // TODO: This serializer stuff for document references should be in standard typed doc serializer var settings = new JsonSerializerSettings(); var documentReferenceConverter = new DocumentReferenceConverter(); settings.Converters.Add(documentReferenceConverter); var jsonSerializer = JsonSerializer.CreateDefault(settings); var jdoc = new Document { Meta = typedDoc.Meta, Content = JObject.FromObject(typedDoc.Content, jsonSerializer), }; jdoc.References = new List <DocumentReferencePosition>(documentReferenceConverter.References); return(jdoc); }
public static Task <TypedDocument <T> > StoreObject <T>(this IProvider provider, TypedDocument <T> typedDoc) { var doc = Serialize <T>(typedDoc); Func <Task <Document>, TypedDocument <T> > continuation = task => Deserialize <T>(task.Result); return(provider.StoreDocument(doc).ContinueWith <TypedDocument <T> >(continuation)); }