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;
        }
相关推荐
huohaiyu10 分钟前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
YsyaaabB23 分钟前
LangChain作业二---多语言翻译Prompt
开发语言·python·langchain
SunnyDays101124 分钟前
如何在 Java 中实现 OFD 与 PDF 格式互转
java·开发语言
keykey6.35 分钟前
用 PyTorch 训练图像分类器:完整实战
开发语言·人工智能·深度学习·机器学习
雪度娃娃36 分钟前
转向现代C++——保证const成员函数的线程安全性
开发语言·c++
原来是猿1 小时前
深入理解 C++ unordered_map 与 unordered_set
开发语言·c++
满天星83035771 小时前
【Qt】信号和槽 (一)(概述和基本使用)
开发语言·c++·qt
l1t1 小时前
DeepSeek总结的 waddler,一个 Go 语言编写的从 YAML 文件运行的 ETL 管道
开发语言·golang·etl
FlyWIHTSKY1 小时前
React 19 + Next.js 16(App Router)项目中集成 MSW
开发语言·javascript·vue.js
Mr.Daozhi1 小时前
跨境电商选品完整流水线:Google Trends筛词+Meta广告分析,CLI工具设计实战
开发语言·爬虫·python·跨境电商·工具链·选品