C# 实体转换

使用反射转换实体

csharp 复制代码
        //泛型+反射
        public static T ConvertModel<T, P>(P pModel)
        {
            T ret = System.Activator.CreateInstance<T>();

            List<PropertyInfo> p_pis = pModel.GetType().GetProperties().ToList();
            PropertyInfo[] t_pis = typeof(T).GetProperties();

            foreach (PropertyInfo pi in t_pis)
            {
                //可写入数据
                if (pi.CanWrite)
                {
                    //忽略大小写
                    var name = p_pis.Find(s => s.Name.ToLower() == pi.Name.ToLower());
                    if (name != null && pi.PropertyType.Name == name.PropertyType.Name)
                    {
                        pi.SetValue(ret, name.GetValue(pModel, null), null);
                    }

                }
            }

            return ret;
        }
相关推荐
这里是彪彪3 分钟前
Java中的volatile关键字的作用
java·开发语言
Dxy12393102167 分钟前
Python的zip用法详解
开发语言·python
逑之8 分钟前
C语言笔记3:分支与循环
c语言·开发语言·笔记
黎雁·泠崖16 分钟前
Java入门从零起步:CMD操作+JDK环境搭建+第一个Java程序
java·开发语言
f***241116 分钟前
MATLAB高效算法优化实战指南
开发语言·算法·matlab
智算菩萨18 分钟前
【Python自然语言处理】实战项目:词向量表示完整实现指南
开发语言·python·自然语言处理
Blossom.11822 分钟前
联邦迁移学习实战:在数据孤岛中构建个性化推荐模型
开发语言·人工智能·python·深度学习·神经网络·机器学习·迁移学习
yaoxin52112323 分钟前
288. Java Stream API - 创建随机数的 Stream
java·开发语言
kylezhao201923 分钟前
C#根据时间加密和防止反编译
java·前端·c#
superman超哥25 分钟前
迭代器适配器(map、filter、fold等):Rust函数式编程的艺术
开发语言·rust·编程语言·rust map·rust filter·rust fold·rust函数式