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;
        }
相关推荐
雨中散步撒哈拉1 分钟前
22、做中学 | 高一下期 | Golang反射
开发语言·golang·状态模式
a努力。5 分钟前
中国电网Java面试被问:Dubbo的服务目录和路由链实现
java·开发语言·jvm·后端·面试·职场和发展·dubbo
itwangyang52014 分钟前
人工智能药物设计和生信常用 R 包一键全自动安装脚本
开发语言·人工智能·r语言
catchadmin15 分钟前
PHP 8.5 升级生存指南:避免凌晨两点回滚的检查清单
开发语言·php
38242782715 分钟前
JS正则表达式实战:核心语法解析
开发语言·前端·javascript·python·html
zh_xuan16 分钟前
kotlin伴生对象
开发语言·kotlin
你怎么知道我是队长24 分钟前
C语言---递归
c语言·开发语言
superman超哥28 分钟前
实时互动的基石:Rust WebSocket 实现的架构之美
开发语言·rust·编程语言·rust websocket·rust实施互通·rust架构之美
古城小栈29 分钟前
编译型 VS 解释型, 快慢有道
开发语言
qq_3660862233 分钟前
log.info中使用多个占位符{}问题
开发语言