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;
        }
相关推荐
创可贴治愈心灵41 分钟前
WPF中UI线程频繁操作造成卡顿的处理
ui·c#·wpf
我爱学嵌入式1 小时前
C语言:第18天笔记
c语言·开发语言·笔记
楚Y6同学2 小时前
QT之QSS的使用方法和常用控件的样式设置
开发语言·qt
Yolo566Q3 小时前
“R语言+遥感”的水环境综合评价方法实践技术应用
开发语言·r语言
文火冰糖的硅基工坊5 小时前
[激光原理与应用-317]:光学设计 - Solidworks - 草图
开发语言·python·信息可视化·系统架构
草莓熊Lotso5 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
c语言·开发语言·经验分享·算法·强化
草明5 小时前
docker stats 增加一列容器名称的显示
java·开发语言·docker
He1955015 小时前
Go初级二
开发语言·后端·golang
格林威6 小时前
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型和EasyOCR实现汽车牌照动态检测和识别(C#代码,UI界面版)
人工智能·深度学习·数码相机·yolo·c#·汽车·视觉检测
Aczone286 小时前
Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
linux·网络·网络协议·tcp/ip·http·c#