用JSON或者XML等,不存在此问题,或者说相对容易解决此问题。

以下是指特定用Soap来进行序列化和反序列化中碰到的。

在一个程序集中:

class Program
{
    static void Main(string[] args)
    {
        //Serialize();
        A a = new A();
        string re = Tool.Serialize(a);
        Console.WriteLine(re);
        var b = Tool.Desrialize<A>(re);
        Console.WriteLine(b.ToString());
    }
}

class Tool
{
    public static string Serialize<T>(T obj)
    {
        try
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, obj);
            stream.Position = 0;
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            stream.Flush();
            stream.Close();
            //return Convert.ToBase64String(buffer);
            string utf8String = Encoding.ASCII.GetString(buffer);
            return utf8String;
        }
        catch (Exception ex)
        {
            throw new Exception("fail:" + ex.Message);
        }
    }

public static T Desrialize<T>(string str) where T : class
    {
        T obj = null;

try
        {
            IFormatter formatter = new BinaryFormatter();
            byte[] buffer = Encoding.ASCII.GetBytes(str);
            //byte[] buffer = Convert.FromBase64String(str);
            MemoryStream stream = new MemoryStream(buffer);
            obj = (T)formatter.Deserialize(stream);
            stream.Flush();
            stream.Close();
        }
        catch (Exception ex)
        {
            throw new Exception("fail:" + ex.Message);
        }
        return obj;
    }
}

[Serializable]
public class A
{
    public string a;
}

在另一个程序集中:

class Program
{
    static void Main(string[] args)
    {
        string x = "AAEAAAD/AQAAAAAAAAAMAgAAAEpDb25zb2xlQXBwbGljYXRpb24zLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAFUNvbnNvbGVBcHBsaWNhdGlvbjMuQQEAAAABYQECAAAACgs=";

var s = Tool.Desrialize<A>(x);
        Console.WriteLine(s.ToString());
    }
}

class Tool
{
    public static string Serialize<T>(T obj)
    {
        try
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, obj);
            stream.Position = 0;
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            stream.Flush();
            stream.Close();
            return Convert.ToBase64String(buffer);
        }
        catch (Exception ex)
        {
            throw new Exception("fail:" + ex.Message);
        }
    }

public static T Desrialize<T>(string str) where T : class
    {
        T obj = null;
        try
        {
            IFormatter formatter = new BinaryFormatter();
            byte[] buffer = Convert.FromBase64String(str);
            MemoryStream stream = new MemoryStream(buffer);
            obj = (T)formatter.Deserialize(stream);
            stream.Flush();
            stream.Close();
        }
        catch (Exception ex)
        {
            throw new Exception("fail:" + ex.Message);
        }
        return obj;
    }
}

[Serializable]
public class A
{
    public string a;
}

无非就是替换其中关于类型程序集信息的替换。

当然,此解决方案的一个问题是,随着每次程序集版本号的修改,代码中的 Replace 部分也要做修改。蛋疼。

转载于:https://www.cnblogs.com/luminji/p/4316443.html

如何在一个程序集中序列化在另一个中反序列化相关推荐

  1. 程序中,序列化与反序列化

    在某些需求下,需要将一个类进行序列化,存入数据库,等另一个操作从数据库中取出,再反序列化成类. 一般实现: #region 把一个对象序列化成流/// <summary>/// 把一个对象 ...

  2. 第七周项目一-三个函数在一个程序中(5)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年4月12日 *版 本 ...

  3. MapReduce程序之序列化原理与Writable案例

    [TOC] MapReduce程序之序列化原理与Writable案例 前言 在编写MapReduce程序时,我们会发现,对于MapReduce的输入输出数据(key-value),我们只能使用Hado ...

  4. 自定义jackson序列化_Jackson中的自定义反序列化程序和验证

    自定义jackson序列化 tl; dr:将输入验证添加到Jackson中的自定义json解串器中很重要. 在RHQ中,我们在几个地方使用了Json解析-直接在as7 / Wildfly插件中,或者通 ...

  5. 在一个程序中什么算是亮点_VASP 计算问题小结

    本文转载自博主一个人就是一个叠加态,有部分删减修改,文中对相关概念方法做了详细的总结,留坑待填... 1. 第一原理计算的一些心得 1. 第一性原理 第一性原理其实是包括基于密度泛函的从头算和基于Ha ...

  6. python程序设计实验报告实验程序流程序列化_Python使用pickle模块实现序列化功能示例...

    本文实例讲述了Python使用pickle模块实现序列化功能.分享给大家供大家参考,具体如下: Python内置的pickle模块能够将Python对象序列成字节流,也可以把字节流反序列成对象. im ...

  7. python程序设计实验报告实验程序流程序列化_Python程序设计_教学大纲_段震.doc

    <Python程序设计>教学大纲 安徽大学 计算机科学与技术 学院 2015 年 10 月课程性质与设置目的要求(前言)<Python程序设计>课程是计算机科学与技术学院各专业 ...

  8. 在一个程序中什么算是亮点_算法的五个重要特性是

    算法的五个特征是?如题 1.有穷性: 一个算法必须保证执行有限步之后结束: 2.确切性: 算法的每一步骤必须有确切的定义: 3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是 ...

  9. vuforia ar unity 案例从零制作 三 番外 假如想在一个程序扫描多个图片,出现不同模型

    如果我们一张图做一个程序 app显然不合理,至少我们得做一个类别的,一个系列的,多个图包含的 那么经过测试,实现其实很简单 我们选中iamgetarget 按下 ctrl+D 复制一份,吧他的data ...

最新文章

  1. [转贴]2006十大经典语句
  2. 声明一个图书类(Java)
  3. 在 Windows 命令提示符下启动 MySQL:net start mysql 发生系统错误 5。 拒绝访问。解决方式小结
  4. 【Absible学习】Ansible普通用户sudo执行指令
  5. C++ 对象模型(二)
  6. C++11 右值引用与移动语义
  7. 分内外网,下载个东西真不方便,一肚子火
  8. 单片机广告灯实验总结_单片机流水灯实验总结精选 .doc
  9. 【每日力扣Leetcode】459-判断一个字符串是否由子字符串重复组成
  10. 网络爬虫——前程无忧网数据获取及MYSQL存储
  11. 【Mac网络错误】-只能登陆微信,无法访问网页
  12. 我是如何录制技术视频教程的?
  13. 如何化解濒临离婚边缘的婚姻危机
  14. 经纬度换算数值_Excel中经纬度数据转换公式
  15. 关于 厦门“怪虫” 的一点感概
  16. 数字地球与计算机技术联系,数字地球与现代测绘科学的发展问题
  17. GraphQL标准的Java实现graphql-java概述
  18. 本地地址映射成外网地址工具-ngrok
  19. 计算机系统自动撮合成交的原则,什么是撮合成交原则,撮合成交价是怎么确定的?...
  20. Dreamweaver Flash Photoshop网页设计基础与实例教程(职业白金版)

热门文章

  1. GLUT及其函数的用法整理
  2. 99% 的新移动恶意程序是针对 Android
  3. JPA学习(6)JPQL
  4. 【Git入门之十二】DIY Git
  5. struts2实现拦截器的方法
  6. Nexus如何上传自己的jar包 (upload artifactory)
  7. Java的反射机制 工厂模式综合讲解【转载自51CTO】
  8. 读《编程之道》-对于程序员的抽象描述
  9. 老婆,我会好好爱你的
  10. Apache Commons fileUpload实现文件上传