美文网首页程序员
基于反射的泛型模型转换

基于反射的泛型模型转换

作者: 野鸟 | 来源:发表于2016-11-20 16:43 被阅读63次

这是我的第一篇技术性原创文章,平时分享的文章离代码都有点远,一时间不知道怎么写了,真是“万事开头难”,不管怎么样,先写了再说。就先分享点简单的东西吧,主要偏向于个人总结,如果对大家有所帮助,再好不过。

1. 业务场景

也许大家都遇到过这种纠结,即如何从一个数据模型(姑且叫Model1)转换成另一个数据模型(Model2)?Model1和Model2有部分相同的属性、类型,我们希望将Model1属性的值赋于Model2相对应的属性,比如,将API接口数据模型转为数据库的数据模型。一般情况下,API接口接收到的数据包含了一些业务逻辑的字段,并不都需要保存到数据库。

当这种情况比较少时,我们可以在数据模型内部实现一个转换的方法,专门处理对应的API接口数据模型与数据库数据模型之间的转换映射。而这种需求比较多,Model又不确定的情况下,要是有一个能够处理并兼容各种Model之间的数据转换就好了。很高兴的是,一般的编程语言都支持泛型,今天我们就以C#为例,来实现这样一个方法。

2. 技术实现

首先,创建两个测试的实体类(Model),UserInfoOrigin和UserInfoResult(此处也包含了泛型属性),如下所示:




接着,再创建一个实体类TestModel,用来给UserInfoOrigin和UserInfoResult的泛型属性T指定类型。当然,你也可以指定其他基础数据结构的类型,比如Int,String,List,DateTime等,这里我们测试最复杂的Class类型。


接下来,我们就要实现一个通用的处理方法,称为ConvertModel,要求传入一个Model1,返回另一个Model2,出来时的Model2就自动赋上Model1相对应的属性值了。如下所示:



最后,我们来测试一下是不是得到了我们想要的结果,测试代码如下所示:



调试运行时,我们对UserInfoResult类型的uResult进行监视,得到以下结果,看来是对了:
今天的分享就到这。

欢迎访问我的CSDN博客专栏:http://blog.csdn.net/water_0815/article/details/53240037

相关文章

  • 基于反射的泛型模型转换

    这是我的第一篇技术性原创文章,平时分享的文章离代码都有点远,一时间不知道怎么写了,真是“万事开头难”,不管怎么样,...

  • 章节笔记——泛型与反射机制

    泛型 反射机制 泛型:由于类型转换错误,编译时不报错,运行时报错。为了弥补这个问题,用泛型弥补,集合类添加对象不需...

  • 泛型 & 注解 & Log4J日志组件

    掌握的知识 : 基本用法、泛型擦除、泛型类/泛型方法/泛型接口、泛型关键字、反射泛型(案例) 泛型 概述 : 泛型...

  • Java泛型

    本文介绍的知识点 泛型是什么? 泛型的使用在反射中使用泛型在集合类中使用泛型 关于泛型擦除如何理解?如何避免泛型擦...

  • 【Java】【反射】泛型反射

    泛型反射 在运行时,泛型是无效的,所以可以通过反射在运行时将其他类型变量添加到集合,而不需要考虑泛型

  • 关于反射的使用

    反射中获取泛型参数信息

  • UnsafePointer、UnsafeRawPointer 的

    rawPointer 转换 泛型指针

  • 第二天

    1 根据pdm生成sql脚本 2 设计持久层和表现层 2.1 持久层设计(基于泛型+反射) 通用接口: 通用实现:...

  • 现代Java进阶之路必备技能——2019 版

    Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等...

  • Java笔记---泛型

    总结了泛型的基本语法、上下级通配符、泛型反射以及使用泛型的一些实践,看完还不会用泛型你顺着网线来打我(狗头)。 我...

网友评论

    本文标题:基于反射的泛型模型转换

    本文链接:https://www.haomeiwen.com/subject/qelypttx.html