美文网首页.NET
C# Model To Model

C# Model To Model

作者: 念旧的时光 | 来源:发表于2018-12-24 22:11 被阅读0次

/// <summary>

/// 方法目的:当一个类(T)已经有值,但是这个时候需要对另一个类(Tn)赋值

/// 并且 两个类存在相同字段名称(最终目的把两个类中相同字段直接赋值);

/// 例:class MenuTB{ public string Name{get;set;}}  class ShowMenuModel{ public string Name{get;set;}}

/// 备注:下面例子Tn是继承T后新的类返回值

/// T->MenuTB

 /// Tn->ShowMenuModel

// 调用方法:ShowMenuModel fmodel = ModelToModel<MenuTB, ShowMenuModel>(frow,new ShowMenuModel());

        /// </summary>

        /// <typeparam name="T">被继承的类</typeparam>

        /// <typeparam name="Tn">继承T后新的类</typeparam>

        /// <param name="objmodel">T类的参数值</param>

        /// <param name="nobjModel">Tn类一个空的实例化</param>

        /// <returns></returns>

        public Tn ModelToModel<T, Tn>(T objmodel, Tn nobjModel)

        {

            Tn Nobjmodel = nobjModel;

            //被继承的类

            Type modelType = typeof(T);

            Type newModel = typeof(Tn);//继承后的新类

            PropertyInfo[] newpropertys = modelType.GetProperties();//列举出新的类中信息

            //循环新类的属性

            foreach (PropertyInfo pi in newpropertys)

            {

                string ParaName = pi.Name;//参数名称

                string ParamType = pi.PropertyType.Name;//字段类型 int/DateTime/string 等等

                object vaule = modelType.GetProperty(ParaName).GetValue(objmodel, null);//从被继承的类中根据相同字段名称读取类的值

                newModel.GetProperty(ParaName).SetValue(Nobjmodel, vaule, null);//给新版本的类参数赋值

            }

            return Nobjmodel;

        }

相关文章

网友评论

    本文标题:C# Model To Model

    本文链接:https://www.haomeiwen.com/subject/lxmtlqtx.html