private async Task DeserializeAsync(Stream stream, Type type, Reference reference) { InternalXamlSchemaContext xamlSchemaContext = new InternalXamlSchemaContext(this, reference); XamlObjectWriter writer = new XamlObjectWriter(xamlSchemaContext); XamlXmlReader reader = new XamlXmlReader(stream, xamlSchemaContext); XamlServices.Transform(reader, writer); if (type == typeof(object) && writer.Result is Asset || !type.IsInstanceOfType(writer.Result)) { if (!(writer.Result is Asset asset)) { throw new InvalidOperationException(); } reference.Object = await asset.CreateAssetAsync(Services); } else { reference.Object = writer.Result; } loadedAssetReferences[reference.Object] = reference; }
internal async Task SerializeAsync(string path, object obj) { using (Stream stream = await FileProvider.OpenStreamAsync(path + FileExtension, FileMode.Create, FileAccess.ReadWrite)) { InternalXamlSchemaContext xamlSchemaContext = new InternalXamlSchemaContext(this); XmlWriter xmlWriter = XmlWriter.Create(stream, new XmlWriterSettings { Indent = true }); XamlXmlWriter writer = new XamlXmlWriter(xmlWriter, xamlSchemaContext); XamlObjectReader reader = new XamlObjectReader(obj, xamlSchemaContext); XamlServices.Transform(reader, writer); } Reference reference = new Reference(path, obj, true); AddReference(reference); }
internal async Task SerializeAsync(string path, object obj) { using (Stream stream = await RootFolder.OpenStreamForWriteAsync(path + FileExtension, Windows.Storage.CreationCollisionOption.ReplaceExisting)) { InternalXamlSchemaContext xamlSchemaContext = new InternalXamlSchemaContext(this); XmlWriter xmlWriter = XmlWriter.Create(stream, new XmlWriterSettings { Indent = true }); XamlXmlWriter writer = new XamlXmlWriter(xmlWriter, xamlSchemaContext); XamlObjectReader reader = new XamlObjectReader(obj, xamlSchemaContext); XamlServices.Transform(reader, writer); } Reference reference = new Reference(path, obj, true); AddReference(reference); }
private async Task DeserializeAsync(Stream stream, object rootObjectInstance, Reference reference) { InternalXamlSchemaContext xamlSchemaContext = new InternalXamlSchemaContext(this, reference); XamlObjectWriter writer = new XamlObjectWriter(xamlSchemaContext, new XamlObjectWriterSettings { RootObjectInstance = rootObjectInstance }); XamlXmlReader reader = new XamlXmlReader(stream, xamlSchemaContext); XamlServices.Transform(reader, writer); if (rootObjectInstance != reference.Object) { if (!(rootObjectInstance is Asset asset)) { throw new InvalidOperationException(); } await asset.CreateAssetAsync(reference.Object, Services); } }