1、最简单的方式,反射+泛型
优点:字段修改时,无需更改代码,只需要更新实体即可
缺点:因为用到反射,可能效率会稍微弱那么一点点,没有实际用太多字段测试
public static cClass ParentCopyToChild<pClass,cClass>(pClass parent) where cClass: class,pClass,new()
{
//ChildClass child = new ChildClass();
cClass child = new cClass();
var ParentType = typeof(pClass);
var Properties = ParentType.GetProperties();
foreach (var Propertie in Properties)
{
if (Propertie.CanRead && Propertie.CanWrite)
{
Propertie.SetValue(child, Propertie.GetValue(parent, null), null);
}
}
return child;
}
2、子类中加入赋值操作
public class TreeViewOrgEx:TreeViewOrg
{
public long ParentCode = 0;
public string TypeName = string.Empty;
//树开启多选框时,此属性决定是否默认选中
public bool isChecked;
//树开启多选框时,此属性决定多选框是否禁用
public bool chkDisabled;
//树是否默认展开
public bool open = true;
public int ISRole = 0;
//需要一个默认构造函数
public TreeViewOrgEx()
{
}
public TreeViewOrgEx(TreeViewOrg orgBase)
{
this.ID = orgBase.ID;
this.OrgCode = orgBase.OrgCode;
this.OrgName = orgBase.OrgName;
this.OrgLevel = orgBase.OrgLevel;
this.OrgType = orgBase.OrgType;
this.SourceCode = orgBase.SourceCode;
this.UpdateTime = orgBase.UpdateTime;
}
}
赋值
TreeViewOrg tempOrg = new TreeViewOrg();
tempOrg.OrgCode = 10000000000;
TreeViewOrgEx orgEx = new TreeViewOrgEx(tempOrg);
orgEx.ParentCode = 20000000000;
3、写方法操作
public void TreeViewOrgToTreeViewOrgEx(TreeViewOrg org, TreeViewOrgEx orgEx)
{
orgEx.ID = org.ID;
orgEx.OrgCode = org.OrgCode;
orgEx.OrgName = org.OrgName;
orgEx.OrgLevel = org.OrgLevel;
orgEx.OrgType = org.OrgType;
orgEx.SourceCode = org.SourceCode;
orgEx.UpdateTime = org.UpdateTime;
}