private ISymbol method_7(string string_1) { int num2; byte[] buffer = Convert.FromBase64String(string_1); int num = buffer.Length - 16; byte[] b = new byte[16]; for (num2 = 0; num2 < 16; num2++) { b[num2] = buffer[num2]; } Guid clsid = new Guid(b); ESRI.ArcGIS.esriSystem.IPersistStream stream = Activator.CreateInstance(System.Type.GetTypeFromCLSID(clsid)) as IPersistStream; byte[] buffer3 = new byte[num]; for (num2 = 0; num2 < num; num2++) { buffer3[num2] = buffer[num2 + 16]; } IMemoryBlobStream pstm = new MemoryBlobStreamClass(); ((IMemoryBlobStreamVariant)pstm).ImportFromVariant(buffer3); stream.Load(pstm); return(stream as ISymbol); }
private IElement method_2(object object_0) { IMemoryBlobStream o = object_0 as IMemoryBlobStream; IPropertySet set = new PropertySetClass(); IObjectStream pstm = new ObjectStreamClass { Stream = o }; ESRI.ArcGIS.esriSystem.IPersistStream stream3 = set as ESRI.ArcGIS.esriSystem.IPersistStream; stream3.Load(pstm); IElement property = null; try { property = set.GetProperty("Element") as IElement; } catch (Exception) { } ComReleaser.ReleaseCOMObject(stream3); ComReleaser.ReleaseCOMObject(set); ComReleaser.ReleaseCOMObject(o); set = null; return(property); }
private void btnSaveAs_Click(object sender, EventArgs e) { SaveFileDialog dialog = new SaveFileDialog { Filter = "空间参考文件 (*.prj)|*.prj", OverwritePrompt = true }; if (dialog.ShowDialog() == DialogResult.OK) { string fileName = dialog.FileName; ESRI.ArcGIS.esriSystem.IPersistStream stream = (ESRI.ArcGIS.esriSystem.IPersistStream) this.ispatialReference_0; IXMLStream stream2 = new XMLStreamClass(); stream.Save((ESRI.ArcGIS.esriSystem.IStream)stream2, 1); stream2.SaveToFile(fileName); string str2 = stream2.SaveToString(); int index = str2.IndexOf("["); str2 = str2.Substring(index - 6); index = str2.LastIndexOf("]"); str2 = str2.Substring(0, index + 1); if (File.Exists(fileName)) { File.Delete(fileName); } using (System.IO.FileStream stream3 = File.Create(fileName)) { this.method_2(stream3, str2); } } }
/// <summary> /// 序列化(将对象序列化成字符串) /// </summary> /// <param name="xmlByte">序列化字节</param> /// <param name="obj">序列化对象</param> /// <returns></returns> public static byte[] xmlSerializer(object obj) { try { byte[] xmlByte = null;//保存序列化后的字节 //判断是否支持IPersistStream接口,只有支持该接口的对象才能进行序列化 if (obj is ESRI.ArcGIS.esriSystem.IPersistStream) { ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream; ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); pStream.Save(xmlStream as ESRI.ArcGIS.esriSystem.IStream, 0); xmlByte = xmlStream.SaveToBytes(); } return(xmlByte); } catch (Exception ex) { ////********************************************* ////guozheng 2010-12-24 平安夜 added 系统异常日志 //if (ModData.SysLog == null) ModData.SysLog = new clsWriteSystemFunctionLog(); //ModData.SysLog.Write(ex); ////********************************************** return(null); } }
private void method_5() { ESRI.ArcGIS.esriSystem.IPersistStream stream = (ESRI.ArcGIS.esriSystem.IPersistStream) this.ispatialReference_0; IXMLStream stream2 = new XMLStreamClass(); stream.Save((ESRI.ArcGIS.esriSystem.IStream)stream2, 1); string str = stream2.SaveToString(); int index = str.IndexOf("["); str = str.Substring(index - 6); index = str.LastIndexOf("]"); str = str.Substring(0, index + 1); }
private string method_6(ISymbol isymbol_0) { Guid guid; object obj2; ESRI.ArcGIS.esriSystem.IPersistStream stream = (ESRI.ArcGIS.esriSystem.IPersistStream)isymbol_0; IMemoryBlobStream pstm = new MemoryBlobStreamClass(); IObjectStream stream3 = new ObjectStreamClass { Stream = pstm }; stream.GetClassID(out guid); stream.Save(pstm, 1); ((IMemoryBlobStreamVariant)pstm).ExportToVariant(out obj2); System.Array array = obj2 as Array; byte[] buffer = new byte[array.Length + 16]; guid.ToByteArray().CopyTo(buffer, 0); array.CopyTo(buffer, 16); return(Convert.ToBase64String(buffer)); }