C# 实体类转换的两种方式

以下提供两种方式,一种是序列化,一种是泛型+反射;

实现功能:

两个实体类数据转换赋值

//学生类   
private class Student
{public string name { get; set; }public int age { get; set; }public string className { get; set; }}
//教师类
private class Teacher
{public string name { get; set; }public int age { get; set; }public string sex { get; set; }
}
//给学生类赋值Student student = new Student{name = "张三",age = 20,className = "六"};//泛型+反射方式Teacher teacher = ConvertModel<Teacher, Student>(student);Console.WriteLine(teacher.name);//张三Console.WriteLine(teacher.age);//20Console.WriteLine(teacher.sex);//JSON序列化方式teacher = null;string json = JsonConvert.SerializeObject(student);teacher = JsonConvert.DeserializeObject<Teacher>(json);Console.WriteLine(teacher.name);//张三Console.WriteLine(teacher.age); //20Console.WriteLine(teacher.sex);//泛型+反射
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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Node.js】crypto 模块

crypto模块的目的是为了提供通用的加密和哈希算法。用纯JavaScript代码实现这些功能不是不可能&#xff0c;但速度会非常慢。 Nodejs用C/C实现这些算法后&#xff0c;通过cypto这个模块暴露为JavaScript接口&#xff0c;这样用起来方便&#xff0c;运行速度也快。 只要密钥发…

location对象详解

location对象详解_window.location.assign_边中之城的博客-CSDN博客

vuex的模块化和namespaced

这里主要是将store里面的index.js这个文件变得更加有条理性一点&#xff0c;使得整个代码看起来比较清晰 主要的变动在于count.vue,person.vue,index.js count.vue <template><div><h1>当前求和为&#xff1a;{{sum}}</h1><h3>当前求和放大10…

制造业单项冠军(国家级、广东省、深圳市)奖励政策及申报对比

制造业单项冠军的头衔含金量极高&#xff0c;是某一细分领域的“领头雁”。下面深科信对“制造业单项冠军”&#xff08;国家级、广东省级、深圳市级&#xff09;的认定标准、奖励政策进行梳理 。 2023年9月25日&#xff0c;工信部办公厅正式发布《关于开展2023年制造业单项冠军…

【TensorFlow2 之012】TF2.0 中的 TF 迁移学习

#012 TensorFlow 2.0 中的 TF 迁移学习 一、说明 在这篇文章中&#xff0c;我们将展示如何在不从头开始构建计算机视觉模型的情况下构建它。迁移学习背后的想法是&#xff0c;在大型数据集上训练的神经网络可以将其知识应用于以前从未见过的数据集。也就是说&#xff0c;为什么…

linux 安装mysql

1、下载mysql安装包 2、创建mysql文件夹 mkdir /usr/local/mysql 3、解压mysql安装包&#xff0c;并将解压出来的文件夹下面的内容全部移动到/usr/local/mysql下 解压 tar zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 移动 mv /usr/local/src/mysql-5.7.39-linux-gl…

postgres之pg_dump导出和导入

postgres使用有一段时间了&#xff0c;现记录一下一些常用的命令-导出导入&#xff0c;备以后查询&#xff1a; 1.指定表结构导出 pg_dump --host127.0.0.1 --port5432 --username[用户名] -t[表名1] -t [表名1] --schema-only postgres > F:\db.sql 2.指定表数据的导出…

Vue项目为页面添加水印效果

最近在做项目&#xff0c;有这样要求&#xff0c;需要在指定容器中添加水印&#xff0c;也可不设置容器&#xff0c;如果没有容器&#xff0c;则添加在整个页面中&#xff0c;即body&#xff0c;当接到这个需求的时候我第一想的方法就是用canvas来实现&#xff0c;话不多说搞起…

Unity设计模式——装饰模式

装饰模式&#xff08;Decorator&#xff09;&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更为灵活。 Component类&#xff1a; abstract class Component : MonoBehaviour {public abstract void Operation(); …

华为认证 | HCIP-Datacom,这门认证正式发布新版本!

华为认证数通高级工程师HCIP-Datacom-Campus Network Planning and Deployment V1.5&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司…

互联网性能和可用性优化CDN和DNS

当涉及到互联网性能和可用性优化时&#xff0c;DNS&#xff08;Domain Name System&#xff09;和CDN&#xff08;Content Delivery Network&#xff09;是两个至关重要的元素。它们各自发挥着关键作用&#xff0c;以确保用户能够快速、可靠地访问网站和应用程序。在本文中&…

C++ 指向数组的指针

如果您对 C 指针的概念有所了解&#xff0c;那么就可以开始本章的学习。数组名是指向数组中第一个元素的常量指针。因此&#xff0c;在下面的声明中&#xff1a; double runoobAarray[50];runoobAarray 是一个指向 &runoobAarray[0] 的指针&#xff0c;即数组 runoobAarra…

Java 多线程编程

Java 多线程编程 目录 Java 多线程编程 一个线程的生命周 线程的优先级 创建一个线程 通过实现Runnable接口来创建线程 实例 通过继承Thread来创建线程 实例 Thread 方法 实例 线程的几个主要概念: 多线程的使用 Java给多线程编程提供了内置的支持。一个多线程程序包…

微信小程序项目如何用Hbuild启动,先让对方在微信开发平台将你的微信号添加成开发成员。

微信小程序项目如何用Hbuild启动&#xff0c;先让对方在微信开发平台将你的微信号添加成开发成员。然后在Hbuild官网下载&#xff0c;下载好后运行&#xff0c;点击文件导入项目&#xff0c;然后点击运行&#xff0c;模拟微信小程序&#xff0c;选择微信开发工具的地址&#xf…

【2023美团后端-8】删除字符串的方案,限制不能连续删

小美定义一个字符申是“美丽串”&#xff0c;当且仅当该字符串包含”mei”连续子串。例如”meimei”、“xiaomeichan"都是美丽串&#xff0c;现在小美拿到了一个字符串&#xff0c;她准备删除一些字符&#xff0c;但不能删除两个连续字符。小美希望最终字符串变成美丽串&a…

技巧:训练时Loss剧烈震荡原因汇总

输入数据有误 数据集太少 输入数据为经过标准化&#xff1a;没有经过正则化处理的数据可能存在异常点&#xff0c;或者数据的量纲不一致。可以采用min_max归一化或者z-score标准化 没有选择合理的数据增强没有经过合理的数据增强可能导致训练的时候网络学习的数据不是想要的最…

pyqt---子线程进行gui操作导致界面崩溃

在 PyQt&#xff08;或 Qt 通常&#xff09;中&#xff0c;您不能直接在子线程中执行与 GUI 相关的操作。这可能会导致应用程序崩溃或不可预测的行为。所有与 GUI 相关的操作都应该在主线程中执行。 如果您需要在子线程完成某些操作后显示一个消息框&#xff0c;可以使用 PyQt…

软件工程与计算总结(六)需求分析方法

本贴介绍需求分析方法&#xff0c;涉及到诸多实践性的东西&#xff0c;掌握各种图表的绘制是重中之重~ 一.需求分析基础 1.原因 需求获取中得到的信息仅仅解释了用户对软件系统的理解与期待&#xff0c;使用的是实际业务的表达方式&#xff0c;还不是开发者能够立即加以实现…

【算法|动态规划No.16】leetcode931. 下降路径最小和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

VSCODE+PHP8.2配置踩坑记录

VSCODEPHP8.2配置踩坑记录 – WhiteNights Site 我配置过的最恶心的环境之一&#xff1a;windows上的php。另一个是我centos服务器上的php。 进不了断点 端口配置和xdebug的安装 这个应该是最常见的问题了。从网上下载完php并解压到本地&#xff0c;打开vscode&#xff0c;安装…