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 分钟前
【数据结构与算法】第20篇:二叉树的链式存储与四种遍历(前序、中序、后序、层序)
c语言·开发语言·数据结构·c++·学习·算法·visual studio
_MyFavorite_6 分钟前
JAVA重点基础、进阶知识及易错点总结(17)线程安全 & synchronized 同步锁
java·开发语言·安全
_MyFavorite_7 分钟前
JAVA重点基础、进阶知识及易错点总结(13)File 类 + 路径操作
java·开发语言
不会写DN8 分钟前
如何使用PHP创建图像验证码
android·开发语言·php
禾小西19 分钟前
深入理解 Java String:从底层原理到高性能优化实战
java·开发语言·性能优化
Huangjin007_25 分钟前
【C++类和对象(四)】手撕 Date 类:赋值运算符重载 + 日期计算
开发语言·c++
飞Link26 分钟前
深入挖掘 LangChain Community 核心组件,从数据接入到企业级 RAG 实战
开发语言·python·langchain
@atweiwei27 分钟前
基于Go语言构建轻量级微服务框架的设计与实现
开发语言·微服务·golang
长不大的小Tom29 分钟前
快速学习 C/C++ 并进阶的路线
开发语言·c++
xuboyok244 分钟前
PHP vs Java:核心差异与选型指南
开发语言·前端·php