ArcEngine中只要是继承了IPersistStream接口的对象均可调用ArcEngine中的类库进行序列化和反序列化。一般我们会序列化成xml格式,作为字符串存储,需要的时候,反序列化为对象。但实际使用的时候,发现序列化出来的xml有乱码,反序列化的时候也会报错。看了下相关接口,也没找到设置文字编码的地方。

最后想着不如序列化成byte[],然后把byte[]保存成字符串存储,反序列化的时候,从字符串先转换成byte[],再进行反序列化。实际测试验证,这种方式是可行的。

具体代码如下。

/// <summary>
/// 保存成bytes字符串
/// </summary>
/// <param name="pPersistStream"></param>
/// <returns></returns>
public static string ToBytesString(IPersistStream pPersistStream)
{
IMemoryBlobStream myMemoryBlobStream = new MemoryBlobStreamClass();
pPersistStream.Save(myMemoryBlobStream, 0);
IMemoryBlobStreamVariant myMemoryBlobStreamVariant = myMemoryBlobStream as IMemoryBlobStreamVariant;
object myObject;
myMemoryBlobStreamVariant.ExportToVariant(out myObject);
return Convert.ToBase64String(myObject as byte[]);
} /// <summary>
/// 从bytes字符串中解析对象信息
/// </summary>
/// <param name="pBytesString"></param>
/// <param name="pPersistStream"></param>
public static void FromBytesString(string pBytesString, IPersistStream pPersistStream)
{
byte[] myByteArray = Convert.FromBase64String(pBytesString);
IMemoryBlobStream myMemoryBlobStream = new MemoryBlobStreamClass();
IMemoryBlobStreamVariant myMemoryBlobStreamVariant = myMemoryBlobStream as IMemoryBlobStreamVariant;
myMemoryBlobStreamVariant.ImportFromVariant(myByteArray);
pPersistStream.Load(myMemoryBlobStream);
}

最新文章

  1. Python中的生成器与yield
  2. 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
  3. HDU 5439 Aggregated Counting
  4. 计蒜客 取数游戏(dp)
  5. C# 中的委托和事件[转自张子扬]
  6. keep健身计划
  7. netbeans 将项目打包生成单个可执行的 jar
  8. Infix to posfix 自己写stack,没有()
  9. linux 下maven安装
  10. Java 后台创建word 文档
  11. [转]C# 实现Jwt bearer Authentication
  12. spark2.1源码分析1:Win10下IDEA源码阅读环境的搭建
  13. Springboot &amp; Mybatis 构建restful 服务
  14. 使用text-align:justify,让内容两端对齐,兼容IE及主流浏览器的方法
  15. 数据库只有mdf文件而没有ldf文件,如何恢复数据库
  16. cuda9.0编译caffe报错nvcc fatal : Unsupported gpu architecture &#39;compute_70&#39;
  17. 【linux C】C语言中常用的几个函数的总结【一】
  18. AngularJS+bootstrap-switch 实现开关控件
  19. IIS7配置HTTPS+默认访问https路径
  20. python 面向对象编程案例01

热门文章

  1. js 数组中的方法
  2. Java SE 7、接口
  3. 在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
  4. SkyWalking 6.x 的架构图
  5. 20. 使用Fluentd发送告警邮件
  6. 容器监控工具WeaveScope初步安装,了解
  7. MySQL数据库-数据表(上)
  8. win10 python 环境搭建
  9. 撸了一个简易的配置中心,顺带整合到了SpringCloud
  10. linux 自动备份mysql数据库