将一个对象相同的属性(不区分大小写)赋值给一个新对象

 
 1 public static T Mapper<S, T>(S source)
 2         {
 3             T t = Activator.CreateInstance<T>();
 4             try
 5             {
 6                 var s_type = source.GetType();
 7                 var t_type = typeof(T);
 8                 foreach (PropertyInfo sp in s_type.GetProperties())
 9                 {
10                     foreach (PropertyInfo dp in t_type.GetProperties())
11                     {
12                         if (dp.Name.ToUpper() == sp.Name.ToUpper())
13                         {
14                             dp.SetValue(t, sp.GetValue(source, null), null);
15                         }
16                     }
17                 }
18             }
19             catch (Exception ex)
20             {
21                 throw ex;
22             }
23             return t;
24         }

DataTable的一个简单的扩展

 

我们在调试代码的时候经常遇到DataTable的数据类型错误,这个类可以帮助我们很快查看DataTable的结构信息.

 1 /// <summary>
 2 /// DataTable扩展类
 3 /// </summary>
 4 public static class DataTableExtensions
 5 {
 6     /// <summary>
 7     /// 显示DataTable的结构信息
 8     /// </summary>
 9     /// <param name="table">datatable</param>
10     public static void LoadDataTableStructure(this DataTable table)
11     {
12         if (table == null)
13         {
14             System.Diagnostics.Debug.WriteLine("datatable is null.");
15         }
16
17         StringBuilder structureInfo = new StringBuilder();
18         string colName = string.Empty;
19         string colType = string.Empty;
20
21         structureInfo.AppendLine("============================Begin=============================");
22         structureInfo.AppendLine("TableName: " + table.TableName);
23         structureInfo.AppendLine(string.Format("{0,-20}{1}", "ColumnName", "DataType"));
24
25         foreach (DataColumn col in table.Columns)
26         {
27             colName = col.ColumnName;
28             colType = col.DataType.ToString();
29             structureInfo.AppendLine(string.Format("{0,-20}{1}", colName, colType));
30         }
31
32         structureInfo.AppendLine("=============================End==============================");
33         System.Diagnostics.Debug.WriteLine(structureInfo.ToString());
34     }
35 }

将一个对象相同的属性(不区分大小写)赋值给一个新对象 DataTable的一个简单的扩展的更多相关文章

  1. C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象

    1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...

  2. java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。

    今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...

  3. Object.create 以原对象为原型创建一个新对象

    Object.create = function(o){ var Fun = function(){}; Fun.prototype = o; return new Fun(); } var peo ...

  4. c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)

    当前项目需要记录变更记录,即用户在进行编辑后,将变更操作记录下来.但是数据没有发生变化,则不记录. 代码1:(仅仅返回是否变化的标识) /// <summary> /// 反射对比实体属性 ...

  5. JS属性描述符之Object.defineProperty()定义对象属性特性

    一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...

  6. Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...

  7. 对象的constructor属性

    对象的constructor属性, 最初是用来标识对象类型的. 比如 ,我们定义一个 Person类,然后实例化两个对象. function Person(name, age, job){this.n ...

  8. python-面向对象-06_私有属性和私有方法

    私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...

  9. js中常用的对象—Array的属性和方法

    今天说一下,js中常用的内置对象——Array对象 Array常用属性: length prototype :给系统对象添加属性和方法 Array常用方法: Array.prototype.sum = ...

随机推荐

  1. CF848A From Y to Y

    思路1: 每次贪心地选择满足i * (i - 1) / 2 <= k最大的i并从k中减去i * (i - 1) / 2,直至k为0.由于函数x * (x - 1) / 2的增长速度比2x要慢,所 ...

  2. ajax无限循环

    // 猜你喜欢的无限加载 (function(){ var content = document.getElementsByClassName("content")[0]; var ...

  3. MySQL 帮助类 MySQLHelper

    /// <summary> /// MySqlHelper操作类 /// </summary> public sealed partial class MySQLHelper ...

  4. CAD绘制一个图象标记对象(com接口VB语言)

    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 3 ...

  5. 浅谈GFC

    Web页面的布局,我们常见的主要有“浮动布局(float)”.“定位布局(position)”.“行内块布局(inline-block)”.“CSS3的多栏布局(Columns)”.“伸缩布局(Fle ...

  6. HDU多校Round 8

    Solved:2 rank:141 D. Parentheses Matrix n,m有一个小于6的时候是一种构造方法 答案是n + (m - 2) / 2 (n > m) 都大于6的时候 可以 ...

  7. 【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法

    版本3.2.2(ThinkPHP\Library\Think\Cache\Driver\Redis.class.php), 一:官方默认不支持选择数据库功能及,现就可选择数据库功能进行说明. 1 co ...

  8. vsCode scss安装

    点击在settings.json中编辑写入代码: { /** Easy Sass 插件 **/ "easysass.formats": [ { "format" ...

  9. 3D NAND闪存是个啥?让国内如此疯狂

    Repost: https://news.mydrivers.com/1/477/477251.htm 上个月底武汉新芯科技主导的国家级存储器产业基地正式动工,在大基金的支持下该项目将投资240亿美元 ...

  10. vscode调试单个PHP脚本文件

    1.安装完vscode里的debug插件后, 在WorkSpace setting:添加上php的可执行文件路径: 2.下载适合自己PHP版本的Xdebug 3.在PHP目录下的php.ini配置文件 ...