.net 父类值赋给子类

Posted zhoushangwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net 父类值赋给子类相关的知识,希望对你有一定的参考价值。

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;
        }

  

以上是关于.net 父类值赋给子类的主要内容,如果未能解决你的问题,请参考以下文章

内联汇编_把a值赋给b的汇编代码

sql server 2000 如何把select的值赋给一个变量

父类的成员变量赋了值,子类继承该变量,值还是父类的值吗?

Pyglet - 文本输入 - 如何将它的值赋给变量?

安卓activity之间值共享解决办法,tabhost之间共享父类值

DRF解析组件以及序列化组件