A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 拼音 中级黑马   /  2013-5-22 13:27  /  1074 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 拼音 于 2013-5-22 13:37 编辑


C# code

class Program
    {
        static void Main(string[] args)
        {
            Class1 c1 = new Class1();
            c1.str1 = "100";
            byte[] b1 = ObjectToBytes(c1);
            Class2 c2 = (Class2)BytesToObject(b1);//这里转换为什么不行啊?
            Object obj = BytesToObject(b1);
            obj.GetType();
            Console.WriteLine( obj.GetType());
            Console.ReadKey();
        }

        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="p_Object"></param>
        /// <returns></returns>
        public static byte[] ObjectToBytes(object p_Object)
        {
            BinaryFormatter _Formatter = new BinaryFormatter();
            MemoryStream _Memory = new MemoryStream();
            try
            {
                _Formatter.Serialize(_Memory, p_Object);
            }
            catch (Exception ex)
            {
            }
            return _Memory.GetBuffer();
        }

        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="p_ObjectBytes"></param>
        /// <returns></returns>
        public static object BytesToObject(byte[] p_ObjectBytes)
        {
            BinaryFormatter _Formatter = new BinaryFormatter();
            MemoryStream _MemStr = new MemoryStream(p_ObjectBytes);
            try
            {
                return _Formatter.Deserialize(_MemStr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }
    }


类class1,class2都是只有一个字符串类型的属性。
注释处报:不能从class1转换成class2


想测试一下怎么接收远程发来的实例对象。 远程发送来的一般是xml 或者是json串,你应该把这些东西反序列化话为对象。而上面的操作,单独的两个不相关的类相互转化报错是正常的。可以是byte[],但是两边需要统一的序列化规则。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马