http://blog.csdn.net/u013093547/article/details/53584591

今天在拷贝对象的时候,看着代码实在是有点烦,一堆一样的代码,还是找找有没有直接反射拷贝不同对象相同属性的值

百度了一下,结果第二个博客就是,地址就是最上面的链接地址

其中主要的就是下面这段代码了

  /// <summary>
/// 传入类型B的对象b,将b与a相同名称的值进行赋值给创建的a中
/// </summary>
/// <typeparam name="A">类型A</typeparam>
/// <typeparam name="B">类型B</typeparam>
/// <param name="b">类型为B的参数b</param>
/// <returns>拷贝b中相同属性的值的a</returns>
public static A Mapper<A, B>(B b)
{
A a = Activator.CreateInstance<A>();
try
{
Type Typeb = b.GetType();//获得类型
Type Typea = typeof(A);
foreach (PropertyInfo sp in Typeb.GetProperties())//获得类型的属性字段
{
foreach (PropertyInfo ap in Typea.GetProperties())
{
if (ap.Name == sp.Name)//判断属性名是否相同
{
ap.SetValue(a, sp.GetValue(b, null), null);//获得b对象属性的值复制给a对象的属性
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return a;
}

创建A拷贝B

 /// <summary>
/// 传入类型A的对象a,类型B的对象b,将b和a相同名称的值进行赋值给a
/// </summary>
/// <typeparam name="A"></typeparam>
/// <typeparam name="B"></typeparam>
/// <param name="a"></param>
/// <param name="b"></param>
public static void Mapper<A, B>(B b,ref A a)
{
try
{
Type Typeb = b.GetType();//获得类型
Type Typea = typeof(A);
foreach (PropertyInfo sp in Typeb.GetProperties())//获得类型的属性字段
{
foreach (PropertyInfo ap in Typea.GetProperties())
{
if (ap.Name == sp.Name)//判断属性名是否相同
{
ap.SetValue(a, sp.GetValue(b, null), null);//获得b对象属性的值复制给a对象的属性
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}

传入A拷贝B

C#利用反射实现两个类的对象之间相同属性的值的复制的更多相关文章

  1. [转]C#利用反射实现两个类的对象之间相同属性的值的复制

    本文转自:https://blog.csdn.net/u013093547/article/details/53584591 在使用c#进行程序编写时,会遇到一个问题,两个属性字段差不多相同的类要进行 ...

  2. C#用反射实现两个类的对象之间相同属性的值的复制

    在进行实体转换操作的时候如果需要在对两个实体之间两个属性字段差不多相同的类要进行一个互相的转换,我们要把a对象的所有字段的值都复制给b对象,我们只能用b.属性=a.属性来写,如果属性字段太多的话,就要 ...

  3. Android利用反射机制为实体类属性赋值

    在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面 ...

  4. C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

    转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结: 对应某个类的 ...

  5. 利用反射跟自定义注解拼接实体对象的查询SQL

    前言 项目中虽然有ORM映射框架来帮我们拼写SQL,简化开发过程,降低开发难度.但难免会出现需要自己拼写SQL的情况,这里分享一个利用反射跟自定义注解拼接实体对象的查询SQL的方法. 代码 自定义注解 ...

  6. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  7. Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)

    在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...

  8. xsd与xml和类(class)对象之间的互相转换

    xsd与xml和类(class)对象之间的互相转换 . 第一:通过现有的已经写好的xsd来生成class(.cs)文件. 在您Visual Studio的安装目录下的SDKv2.0Bin中有个应用程序 ...

  9. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

随机推荐

  1. 《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正

    在原书第二版的p120,这里有一个使用Proxy实现管道化调用的例子,想法很好,但是代码有问题,下面是更正之后的代码. 由于我是在node环境下运行,所以我把几个全局函数定义到global内了,如果是 ...

  2. Java字符串转16 进制工具类Hex.java

    Java字符串转16 进制工具类Hex.java 学习了:https://blog.csdn.net/jia635/article/details/56678086 package com.strin ...

  3. ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

    备份数据库,报错如下 RMAN> backup database; Starting backup at -JAN- allocated channel: ORA_DISK_1 channel ...

  4. python3用BeautifulSoup抓取a标签

    # -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #http://tieba.baidu.com/p/2460150866 from bs4 import Be ...

  5. sublime text3中文文件名显示为框框,怎么解决

    点击Preferences选项——settings {    "font_size": 20,    "ignored_packages":    [      ...

  6. MYSQL 中query_cache_size小结

    1 原理    MySQL查询缓存保存查询返回的完整结果.当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段. 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓 ...

  7. Windows安装Flask Traceback (most recent call last):

    Exception: File "c:\users\appdata\local\programs\python\python36-32\lib\site-packages\pip\compa ...

  8. 同一个脚本在SQLPLUS和SQLDEV上的不同

    前几天收集了信息给Oracle.oracle那边表示格式不正确.让我又一次收集.我非常费解,我是依照官方文档做的呀,怎么会? 于是我果断自己搭了一个环境:RHEL5.8+10.2.0.5 客户那边没法 ...

  9. [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置

    所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...

  10. 传统D3D11程序面向VS2015编译环境的配置修正细节

    A.  配置细节 使用#include <unordered_map>替代<hash_map> 这个是c++标准建议的,没啥好说的 使用#include <directx ...