一个简单的反射拷贝一份新的实体类
生活随笔
收集整理的這篇文章主要介紹了
一个简单的反射拷贝一份新的实体类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候我們需要復制一個實體類,而又不希望兩個使用同一個內存地址,我用了很簡單的反射來實現這種功能:)
/**////?<summary>
????????///?設置實體對象的修改屬性
????????///?</summary>
????????///?<param?name="obj"></param>
????????///?<returns></returns>
????????public?void?CloneEntityObject(object?srcObj,?object?desObj)
????????{
????????????if?(srcObj.Equals(desObj))
????????????{
????????????????return;
????????????}
????????????if?(srcObj.GetType()?!=?desObj.GetType())
????????????{
????????????????return;
????????????}
????????????System.Reflection.PropertyInfo[]?info?=?srcObj.GetType().GetProperties();
????????????foreach?(System.Reflection.PropertyInfo?property?in?info)
????????????{
????????????????desObj.GetType().GetProperty(property.Name).SetValue(desObj,
????????????????????srcObj.GetType().GetProperty(property.Name).GetValue(srcObj,?null),?null);
????????????}
????????}
也可以將實體類直接繼承ICloneable接口,并用如上方法來實現Clone()方法.
現在有不少架構直接使用自動代碼生成器,也可以不使用反射直接每個屬性值進行拷貝亦可。
/**////?<summary>
????????///?設置實體對象的修改屬性
????????///?</summary>
????????///?<param?name="obj"></param>
????????///?<returns></returns>
????????public?void?CloneEntityObject(object?srcObj,?object?desObj)
????????{
????????????if?(srcObj.Equals(desObj))
????????????{
????????????????return;
????????????}
????????????if?(srcObj.GetType()?!=?desObj.GetType())
????????????{
????????????????return;
????????????}
????????????System.Reflection.PropertyInfo[]?info?=?srcObj.GetType().GetProperties();
????????????foreach?(System.Reflection.PropertyInfo?property?in?info)
????????????{
????????????????desObj.GetType().GetProperty(property.Name).SetValue(desObj,
????????????????????srcObj.GetType().GetProperty(property.Name).GetValue(srcObj,?null),?null);
????????????}
????????}
也可以將實體類直接繼承ICloneable接口,并用如上方法來實現Clone()方法.
現在有不少架構直接使用自動代碼生成器,也可以不使用反射直接每個屬性值進行拷貝亦可。
總結
以上是生活随笔為你收集整理的一个简单的反射拷贝一份新的实体类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu虚拟机JeOS安装-2016
- 下一篇: 啥叫正则表达式(语法详解)