广告位联系
返回顶部
分享到

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

C#教程 来源:互联网 作者:佚名 发布时间:2023-12-24 20:26:26 人浏览
摘要

C#实体类转换方式 将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。 以下提供两种方式 一种是序列化 一种是泛型+反射 实现功能 两个实体类数据转换赋值 开发环境

C#实体类转换方式

将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。

以下提供两种方式

  • 一种是序列化
  • 一种是泛型+反射

实现功能

  • 两个实体类数据转换赋值

开发环境

  • 开发工具: Visual Studio 2013
  • .NET Framework版本:4.5

实现代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

//学生类   

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);//20

 Console.WriteLine(teacher.sex);

  

 //JSON序列化方式

 teacher = null;

 string json = JsonConvert.SerializeObject(student);

 teacher = JsonConvert.DeserializeObject<Teacher>(json);

 Console.WriteLine(teacher.name);//张三

 Console.WriteLine(teacher.age); //20

 Console.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;

}

C#实体类转为JSON字符串

1

string jsonstr = JsonConvert.SerializeObject(model);


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • C#纯技术之Class写入Json介绍

    C#纯技术之Class写入Json介绍
    C# Class写入Json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /// summary /// 写入json文件 /// /summary /// param name=obj/param /// param name=save
  • C#实体类转换的两种方式总结
    C#实体类转换方式 将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。 以下提供两种方式 一种是序列化 一种是泛型+反射
  • C#中的时间显示格式(12小时制VS24小时制)介绍
    C#时间显示格式 一起看下: 24小时制 1 this.toolStripStatusLabel1.Text = 您好,欢迎来到XXXX控制系统! + 当前时间: + DateTime.Now.ToString(yyyy-MM-dd HH
  • C#中使用Spire.doc对word的操作方式介绍

    C#中使用Spire.doc对word的操作方式介绍
    使用Spire.doc对word的操作 在最近的工程中我们要处理一些word文档。通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复。
  • C#纯技术之Class写入Json介绍

    C#纯技术之Class写入Json介绍
    C# Class写入Json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /// summary /// 写入json文件 /// /summary /// param name=obj/param /// param name=save
  • C#实体类转换的两种方式介绍
    C#实体类转换方式 将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。 以下提供两种方式 一种是序列化 一种是泛型+反射
  • 在C#中构造自定义属性的详细介绍
    属性用于向程序添加元数据,例如编译器指令和其他信息,例如注释、描述、方法和类。 .Net Framework 允许创建可用于存储声明性信息并可在
  • 在C#中获取路径内的所有目录和子目录的教程
    要获取目录,C#提供了一个方法Directory.GetDirectories。Directory.GetDirectories方法返回与指定搜索模式在指定目录中匹配的子目录的名称(包括其路
  • C#实现窗体换肤的教程
    效果 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
  • 【译】.NET 7 中的性能改进(二)
    原文 | Stephen Toub翻译 | 郑子铭堆栈替换 (On-Stack Replacement)堆栈替换 (OSR) 是 .NET 7 中最酷的 JIT 功能之一。但要真正了解 OSR,我们首先需要了解
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计