面向服务(接口)开发过程中常用的实体类数据复制解决方案

现在面向服务开发基本已经成为B\S、C\S开发必不可少的概念了,之前做过一个WCF服务,在Web端以MVC开发模式去调用这个服务,其中就涉及到了实体类数据的复制,因为Server端的Model和MVC中的Model从理论上说作用域不同,所以当你获取服务返回的数据时,你需要使用实体类去装载这些数据。大致是这样实现的,在Web端声明一个function,(不需要反射,也不需要深克隆)给两个参数,一个是源对象,一个是目标对象。好了接下来有个问题,有时实体类中会有静态字段,所以也得去处理这个静态字段的数据复制问题。源码如下:

 private void EntityToEntity<TSource, TTarget>(TSource s)
            where TSource : new()
            where TTarget : new()
        {
            if (t.GetType().GetFields() != null)
            {
                foreach (var p2 in t.GetType().GetFields())
                {
                    var s1 = s.GetType().GetField(p2.Name); // 找到来源实体类的字段信息
                    p2.SetValue(t, s1.GetValue(null));

                }
            }
            foreach (var p in t.GetType().GetProperties()) // 以目标表为参照对象
            {
                // 复制到本地变量
                var p1 = p;
                {
                    var s2 = s.GetType().GetProperty(p1.Name);
                    if (s2 == null) continue;
                    p1.SetValue(t, s2.GetValue(s, null), null);
                }
            }
        }
时间: 2024-10-21 02:01:09

面向服务(接口)开发过程中常用的实体类数据复制解决方案的相关文章

开发过程中常用的Linux命令

做Java开发好几年了,部署JavaWeb到服务器上,一般都选择Linux,Linux作为服务器真是不二之选,高性能,只要熟悉Linux,操作快捷,效率很高. 总结一下工作中常用的Linux命令备忘: 一.文件操作相关命令 1.创建目录 mkdir software 2.创建多级目录 mkdir /opt/software/ -p 3.删除文件或目录 rm test.sh 此删除命令运行后需要输入y确认的交互过程 rm -f test.sh 直接强制删除不需要输入yes确定 rm -rf /op

thinkphp在app接口开发过程中的通讯数据的封装

在为app开发接口过程中,我们必不可少的要为app前端工程师们提供返回的数据,如何灵活快速又易懂的返回他们需要的数据是非常关键的. 其实thinkphp已经把很多我们要用到的都写出来了,我们只需要稍作修改即可灵活的返回我们需要的数据. 首先,修改Thinkphp/Library/Controller.class.php  在其中增加一个函数 apiReturn(); /** * [apiReturn 用于给app提供接口使用 带有请求结果状态表示,和结果提示,默认返回json] * @param

thinkphp在app接口开发过程中的通讯安全认证

对于我们写好的接口,如果不经过安全认证就可以直接访问的话,则将对我们网站产生非常大的安全隐患,一些hack可能直接用你的接口去操作数据库,后果无法估量.那么如何才能进行有效的安全验证呢? 这里我采用了微信开发中的access_token机制,让app前端开发工程师通过提交appid和appsecert来获取token,服务器端对token缓存7200秒,客户端如果每次都直接请求token则token每次都会重置,所以推荐客户端也一样进行缓存,客户端可以通过判断本地token是否存在,如果存在则直

HTML中常用字符实体

显示结果 描述 实体名称 实体编号   空格     < 小于号 < < > 大于号 > > & 和号 & & " 引号 " " ' 撇号  &apos; (IE不支持) ' ¢ 分 ¢ ¢ £ 镑 £ £ ¥ 日圆 ¥ ¥ € 欧元 € € § 小节 § § © 版权 © © ® 注册商标 ® ® ™ 商标 ™ ™ × 乘号 × × ÷ 除号 ÷ ÷

Swift开发过程中常用到的一些使用技巧和注意的地方

1.自定义类型typealias Swift可以更加方便地定义各种类型,这里使用typealias进行别名处理. 举例说明:typealias MySize = UInt var size :MySize = 100 2.元组 元组语法允许将多个不同类型的值组合成一个复合值并且赋值给一个变量或者常量.元组语法在函数中作为返回值是很好的,可以返回多个类型的值. 元组的定义语法如下: var classInfo = ("iOS888",100) 使用这种方式定义一个数组时,读取其中 的一个

开发过程中常用工具类

/** * 判断非空 * * @param val * @returns {Boolean} */function isEmpty(val) { val = $.trim(val); if (val == null) return true; if (val == undefined || val == 'undefined') return true; if (val == "") return true; if (val.length == 0) return true; if (

分享-个人开发过程中常用的资料网站

注:按Ctrl+单击 打开网页内容. 博客园 Java论坛-CSDN论坛-CSDN.NET-中国最大的IT技术社区 开源中国 - 找到您想要的开源项目,分享和交流 ITeye Java编程 Spring框架 Ajax技术 agile敏捷软件开发 ruby on rails实践 - ITeye做最棒的软件开发交流社区 WEB开发者 - Admin10000.com SourceForge - Download, Develop and Publish Free Open Source Softwa

[工作经验]前端开发过程中常用技巧总结

多行文本溢出显示省略号(...)的方法 现在的浏览器都支持text-overflow:ellipsis属性,用来实现单行文本的溢出显示省略号. 如: 单行文本: overflow:hidden;white-space:nowrap;text-overflow:ellipsis 一些其他技巧可参考:http://www.zhangxinxu.com/wordpress/?p=230 多行文本: text-overflow:ellipsis; display:-webkit-box; -webkit

Visual Studio 2015开发过程中常用快捷键

1.显示方法的重载:ctrl + shift + space 2.注释代码:ctrl + K,C 3.取消注水:ctrl + K,U 4.删除选中代码并且复制:ctrl + L 5.定位到定义:F12 6.将光标移动到上次位置:ctrl + - 7.整理代码:ctrl + K,F 8.添加引用:alt + shift + F10 9.智能提示补充代码:ctrl + J 10.快速地补充for循环:for + TAB + TAB 11.WinForm设计器快速查看代码:F7 12.增加断点:F9