public LayoutInfo ConvertStringToLayoutInfo(string layoutInfo, Store store) { LayoutInfo lInfo = null; Microsoft.VisualStudio.Modeling.SerializationResult serializationResult = new Microsoft.VisualStudio.Modeling.SerializationResult(); DomainXmlSerializerDirectory directory = this.GetDirectory(store); System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); Microsoft.VisualStudio.Modeling.SerializationContext serializationContext = new SerializationContext(directory, "", serializationResult); this.InitializeSerializationContext(store.DefaultPartition, serializationContext, false); DomainClassXmlSerializer rootSerializer = directory.GetSerializer(LayoutInfo.DomainClassId); using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(new System.IO.StringReader(layoutInfo))) { reader.Read(); // Move to the first node - will be the XmlDeclaration if there is one. serializationResult.Encoding = encoding; reader.MoveToContent(); lInfo = rootSerializer.TryCreateInstance(serializationContext, reader, store.DefaultPartition) as LayoutInfo; rootSerializer.Read(serializationContext, lInfo, reader); } return(lInfo); }
public static string SerializeToString(this ModelElement modelElement) { string serializedString = null; var serializer = modelElement.GetSerializer(); if (serializer != null) { using (MemoryStream stream = new MemoryStream()) { DomainXmlSerializerDirectory directory = modelElement.Store.SerializerDirectory; SerializationContext serializationContext = new SerializationContext(directory); // MonikerResolver shouldn't be required in Save operation, so not calling SetupMonikerResolver() here. serializationContext.WriteOptionalPropertiesWithDefaultValue = false; var settings = DONetEntityModelDesignerSerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, Encoding.UTF8); using (XmlWriter writer = XmlWriter.Create(stream, settings)) { serializer.Write(serializationContext, modelElement, writer); writer.Flush(); stream.Position = 0; serializedString = new StreamReader(stream).ReadToEnd(); writer.Close(); stream.Close(); } } } return(serializedString); }
public static T DeserializeFromString <T>(Store store, Guid domainClassId, string xml) where T : ModelElement { T result = default(T); var serializer = GetSerializer(domainClassId); DomainXmlSerializerDirectory directory = store.SerializerDirectory; SerializationContext serializationContext = new SerializationContext(directory); XmlReaderSettings settings = DONetEntityModelDesignerSerializationHelper.Instance.CreateXmlReaderSettings(serializationContext, false); using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml))) { using (XmlReader reader = XmlReader.Create(stream, settings)) { // Attempt to read the encoding. reader.Read(); // Move to the first node - will be the XmlDeclaration if there is one. reader.SkipToNextElementFix(); store.MakeActionWithinTransaction("Deserializing type", delegate { ModelElement element = serializer.TryCreateInstance(serializationContext, reader, store.DefaultPartition); serializer.Read(serializationContext, element, reader); result = (T)element; }); } } return(result); }
public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) throw new System.ArgumentNullException("directory"); if (element == null) throw new System.ArgumentNullException("element"); ExternalType domainType = element as ExternalType; string s = domainType.MetaModel.Name; object[] objArr = new object[] { s }; return System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr); }
public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) throw new System.ArgumentNullException("directory"); if (element == null) throw new System.ArgumentNullException("element"); PropertyGridEditor propertyGridEditor = element as PropertyGridEditor; object[] objArr = new object[] { propertyGridEditor.MetaModel.Name }; return System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr); }
public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) { throw new System.ArgumentNullException("directory"); } if (element == null) { throw new System.ArgumentNullException("element"); } PropertyGridEditor propertyGridEditor = element as PropertyGridEditor; object[] objArr = new object[] { propertyGridEditor.MetaModel.Name }; return(System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr)); }
public override string CalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) throw new System.ArgumentNullException("directory"); if (element == null) throw new System.ArgumentNullException("element"); ExternalType domainType = element as ExternalType; string s1 = this.GetMonikerQualifier(directory, domainType); string s2 = domainType.Namespace; string s3 = domainType.Name; object[] objArr = new object[] { s1, s2, s3}; return System.String.Format(CultureInfo.CurrentCulture, "{0}/{1}/{2}", objArr); }
public override string GetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) { throw new System.ArgumentNullException("directory"); } if (element == null) { throw new System.ArgumentNullException("element"); } ExternalType domainType = element as ExternalType; string s = domainType.MetaModel.Name; object[] objArr = new object[] { s }; return(System.String.Format(CultureInfo.CurrentCulture, "/{0}", objArr)); }
public string ConvertLayoutInfoToString(LayoutInfo info) { string result = String.Empty; Microsoft.VisualStudio.Modeling.SerializationResult serializationResult = new Microsoft.VisualStudio.Modeling.SerializationResult(); DomainXmlSerializerDirectory directory = this.GetDirectory(info.Store); System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); Microsoft.VisualStudio.Modeling.SerializationContext serializationContext = new SerializationContext(directory, "", serializationResult); this.InitializeSerializationContext(info.Partition, serializationContext, false); global::System.IO.MemoryStream newFileContent = new global::System.IO.MemoryStream(); global::System.Xml.XmlWriterSettings settings = DiagramsDSLSerializationHelper.Instance.CreateXmlWriterSettings(serializationContext, false, encoding); using (global::System.Xml.XmlWriter writer = global::System.Xml.XmlWriter.Create(newFileContent, settings)) { DomainClassXmlSerializer rootSerializer = directory.GetSerializer(LayoutInfo.DomainClassId); RootElementSettings rootElementSettings = new RootElementSettings(); rootElementSettings.SchemaTargetNamespace = "http://schemas.microsoft.com/dsltools/DiagramsDSL"; rootElementSettings.Version = new global::System.Version("1.0.0.0"); // Carry out the normal serialization. rootSerializer.Write(serializationContext, info, writer, rootElementSettings); } char[] chars = encoding.GetChars(newFileContent.GetBuffer()); // search the open angle bracket and trim off the Byte Of Mark. result = new string(chars); int indexPos = result.IndexOf('<'); if (indexPos > 0) { // strip off the leading Byte Of Mark. result = result.Substring(indexPos); } // trim off trailing 0s. result = result.TrimEnd('\0'); return(result); }
public override string CalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element) { if (directory == null) { throw new System.ArgumentNullException("directory"); } if (element == null) { throw new System.ArgumentNullException("element"); } ExternalType domainType = element as ExternalType; string s1 = this.GetMonikerQualifier(directory, domainType); string s2 = domainType.Namespace; string s3 = domainType.Name; object[] objArr = new object[] { s1, s2, s3 }; return(System.String.Format(CultureInfo.CurrentCulture, "{0}/{1}/{2}", objArr)); }
private string CustomGetMonikerQualifier(DomainXmlSerializerDirectory directory, ModelElement element) { return(DefaultGetMonikerQualifier(directory, element)); }
private string CustomCalculateQualifiedName(DomainXmlSerializerDirectory directory, ModelElement element) { return(DefaultCalculateQualifiedName(directory, element)); }