C#Model对象克隆

新手写文章 , 语句有点不通顺的话 , 还请见谅 ,不喜勿喷 , 若有更好的说明和方法 , 欢迎评论。

(很早的问题了 , 以前一直没写文章的习惯 , 现在回忆着写吧 , 见谅。)

在工作中遇到这么一个情况 , 有一个ModelA对象(在循环前声明的) ,循环加入一个List<ModelA>中 , 但每次循环时 , ModelA的其中一个Users属性是不同的 , 每次去New一个对象赋值就显得代码很"臃肿"了 , 于是了解到克隆这个方法。BinaryFormatter以二进制格式序列化和反序列化对象。更多关于BinaryFormatter的知识 , 就自己查找吧(嘿嘿~)。

调用方法后 , 你会发现List<ModelA>中的数据为["小明0","小明1","小明2"] , 但他们的Age都是一样的 , 这样就避免了 , 你手动去实例化并且赋值ModelA的"臃肿"了。

// Class ModelA
    [Serializable]
    public class ModelA
    {
      public int Age{ get; set;}
      
      public string users{ get; set;}

    //序列化, 反序列化对象 ,并返回对象,
    public ModelA copy()
        {
            using (Stream objectStream = new MemoryStream())
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(objectStream, this);
                objectStream.Seek(0, SeekOrigin.Begin);
                return formatter.Deserialize(objectStream) as ModelA;
            }
        }
     }
       //调用方法
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                #region 调用

                List<ModelA> l_Model = new List<ModelA>();
                ModelA ModelTest = new ModelA();
                ModelTest.Age = 10;
                for (int i = 0; i < 3; i++)
                {
                    ModelTest.Users = "小明" + i;
                    l_Model.Add(ModelTest.copy());
                }

                #endregion
            }
        }

 

转载于:https://my.oschina.net/u/3727873/blog/1934854

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值