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;
        }
相关推荐
Momentary_SixthSense1 分钟前
设计模式之工厂模式
java·开发语言·设计模式
‎ദ്ദിᵔ.˛.ᵔ₎10 分钟前
STL 栈 队列
开发语言·c++
勿忘,瞬间16 分钟前
数据结构—顺序表
java·开发语言
张張40820 分钟前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339924 分钟前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
fzb5QsS1p26 分钟前
告别重复造轮子,Qt 快速开发脚手架
开发语言·qt·php
航Hang*28 分钟前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
周杰伦fans30 分钟前
C# required 关键字详解
开发语言·网络·c#
༾冬瓜大侠༿32 分钟前
vector
c语言·开发语言·数据结构·c++·算法
liu****1 小时前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯