zoukankan      html  css  js  c++  java
  • .NET中制做对象的副本(三)通过序列化和反序列化为复杂对象制作副本

    1、类的定义

     /// <summary>
        /// 学生信息
        /// </summary>
        [Serializable]
        public class Stu
        {
            /// <summary>
            /// 学生姓名
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// 学生的老师
            /// </summary>
            public List<Teacher> Teachers { get; set; }
        }
    
        /// <summary>
        /// 老师信息
        /// </summary>
        [Serializable]
        public class Teacher
        {
            /// <summary>
            /// 老师姓名
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 学生列表
            /// </summary>
            public List<Stu> Stus { get; set; }
        }

    2、实例化对象

    这个学生类型比较复杂,和老师发生了循环引用。

                Stu stu = new Stu()
                {
                    Name = "马良",
                    Teachers = new List<Teacher>()
                    {
                            new Teacher()
                            {
                                    Name="老师1",
                                    Stus=new List<Stu> (){}
                            }
                    }
                };
                stu.Teachers[0].Stus.Add(stu);

    3、对对象进行拷贝

         BinaryFormatter bfSerialize = new BinaryFormatter();
                MemoryStream ms = new MemoryStream();
                bfSerialize.Serialize(ms, stu);
                BinaryFormatter bfDeserialize = new BinaryFormatter();
                ms.Position = 0;
                Stu stu1 = (Stu)bfDeserialize.Deserialize(ms);

     下载源代码

  • 相关阅读:
    BeanUtils.copyProperties的用法
    WinRAR下载
    安装Perl
    @Value设置默认值
    AutoHotkey
    解决springboot启动日志异常问题
    除以2换成位移操作(骚)
    IDEA生成doc文档生成chm文档
    VMWare虚拟机网络配置
    EOF小结
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/5679416.html
Copyright © 2011-2022 走看看