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 小时前
JavaScript函数完全指南:从基础语法到闭包原理与应用实战
开发语言·javascript
医疗信息化王工1 小时前
从零到一:基于 GGUF 格式部署 Unlimited-OCR 搭建企业级证件识别服务
图像处理·c#·ocr
KobeSacre2 小时前
DelayQueue 源码
java·开发语言
han_hanker2 小时前
重新认识枚举enum
开发语言
zyh______3 小时前
C#语法糖(按照实用性排序)
unity·c#
鹏易灵3 小时前
C++——8.移动语义初探(移动构造、移动赋值)
开发语言·c++·php
2601_962341303 小时前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
凯瑟琳.奥古斯特3 小时前
力扣1008:前序重建BST
开发语言·c++·算法·leetcode·职场和发展
2zcode3 小时前
项目文档:基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab
月疯3 小时前
np.where()[0]的用法
开发语言·python·numpy