C#之转换两个不同类型但是成员相同的对象
2017-05-11 16:47
399 查看
/// <summary> /// 转换两个不同类型但是成员相同的对象 /// </summary> /// <typeparam name="T">目标对象</typeparam> /// <param name="source">待转换对象</param> /// <returns></returns> public static T CopySameFieldsObject<T>(Object source) { Type srcT = source.GetType(); Type destT = typeof(T); // 构造一个要转换对象实例 Object instance = destT.InvokeMember("", BindingFlags.CreateInstance, null, null, null); // 这里指定搜索所有公开和非公开的字段 FieldInfo[] srcFields = srcT.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); // 将源头对象的每个字段的值分别赋值到转换对象里,因为假定字段都一样,这里就不做容错处理了 foreach (FieldInfo field in srcFields) { destT.GetField(field.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance). SetValue(instance, field.GetValue(source)); } return (T)instance; }
相关文章推荐
- [转]比较高效地实现从两个不同数组中提取相同部分组成新的数组(只支持Int类型) [C#]
- C++中的private:类型相同的两个对象,是否可以访问对方的private成员?
- Java相同类型的两个对象比较属性值,得到不同属性的名称和对应的值,附代码实例
- C# 匿名类型 对象 转换成 其他 匿名类对象(具有 相同特性值 的 属性 之间的赋值)
- 复制两个不同类型对象的相同字段的值
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- C#中"错误: 成员名称不能与它们的封闭类型相同"
- C#不同类型的成员变量(字段)的默认值
- C#中的不同类型之间的显式与隐式转换实现
- 黑马程序员----C#中的不同数据类型之间的转换
- C#用extern alias解决两个assembly中相同的类型全名
- 合并不同WebService之间的相同对象类型
- 读<<CLR via C#>>总结(2) 对象创建的原理和两种类型转换方法
- C#方法参数个数和类型相同,名称不同,可以实现重载吗
- .net 关于JSON转换为对象时出现的:数据协定类型 “***”无法反序列化,因为未找到必需的数据成员 **(字段名)
- C#中一个窗体传递另一个窗体的值和sting类型到double类型的转换两个问题
- c#:无法将类型为“System.DBNull”的对象强制转换为类型“System.String”
- C#程序中报“对象不能从 DBNull 转换为其他类型”错误
- C#方法参数个数和类型相同,名称不同,可以实现重载吗
- C#中比较两个对象的地址是否相同