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;
        }
相关推荐
csbysj20202 分钟前
Web 品质样式表:构建高效、美观的网页设计指南
开发语言
小白学大数据4 分钟前
企业精准数据分析双路径对比:运营商大数据与 Python 爬虫技术选型与实践
大数据·开发语言·爬虫·python·数据分析
Hello!!!!!!8 分钟前
C++基础(五)——屏幕和文件输入输出
开发语言·c++·算法
ytttr87310 分钟前
C++ LZW 文件压缩算法实现
开发语言·c++
1candobetter14 分钟前
JAVA后端开发——多模块项目重命名体系解析
java·开发语言·intellij-idea
citi14 分钟前
OpenViking 本地搭建指南
开发语言·python·ai
AI玫瑰助手17 分钟前
Python基础:列表的切片与嵌套列表使用技巧
android·开发语言·python
Bat U21 分钟前
JavaEE|多线程(四)
java·开发语言
白日梦想家68122 分钟前
实战避坑+性能对比,for与each循环选型指南
开发语言·前端·javascript
sycmancia23 分钟前
Qt——文本编辑器中的数据存取
开发语言·qt