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;
        }
相关推荐
AGMTI3 分钟前
webSock动态注册消息回调函数功能实现
开发语言·前端·javascript
csbysj202019 分钟前
SQLite Select 语句
开发语言
点云SLAM19 分钟前
C++(C++17/20)最佳工厂写法和SLAM应用综合示例
开发语言·c++·设计模式·c++实战·注册工厂模式·c++大工程系统
_WndProc19 分钟前
【Python】方程计算器
开发语言·python
会游泳的石头23 分钟前
Java 异步事务完成后的监听器:原理、实现与应用场景
java·开发语言·数据库
黎雁·泠崖26 分钟前
Java字符串进阶:StringBuilder+StringJoiner
java·开发语言
我的offer在哪里28 分钟前
技术实战:用 Python 脚本高效采集与分析手机操作日志
开发语言·python·智能手机
工程师0071 小时前
C#中的AutoUpdater自动更新类
开发语言·c#·自动更新开源库·autoupdate
lsx2024061 小时前
Java 泛型
开发语言
jghhh011 小时前
基于MATLAB的可见光通信系统仿真实现
开发语言·matlab