C# 将object对象转换为实体对象.一共两种方法.

第一种方法,代码如下:

/// <summary>
/// 将object对象转换为实体对象
/// </summary>
/// <typeparam name="T">实体对象类名</typeparam>
/// <param name="asObject">object对象</param>
/// <returns></returns>
private T ConvertObject<T>(object asObject) where T : new()
{
//创建实体对象实例
var t = Activator.CreateInstance<T>();
if (asObject != null)
{
Type type = asObject.GetType();
//遍历实体对象属性
foreach (var info in typeof(T).GetProperties())
{
object obj = null;
//取得object对象中此属性的值
var val = type.GetProperty(info.Name)?.GetValue(asObject);
if (val != null)
{
//非泛型
if (!info.PropertyType.IsGenericType)
obj = Convert.ChangeType(val, info.PropertyType);
else//泛型Nullable<>
{
Type genericTypeDefinition = info.PropertyType.GetGenericTypeDefinition();
if (genericTypeDefinition == typeof(Nullable<>))
{
obj = Convert.ChangeType(val, Nullable.GetUnderlyingType(info.PropertyType));
}
else
{
obj = Convert.ChangeType(val, info.PropertyType);
}
}
info.SetValue(t, obj, null);
}
}
}
return t;
}

第二种方法

需引用

程序集:System.Web.Extensions.dll

命名空间:System.Web.Script.Serialization.

代码如下:

 /// <summary>
/// 将object对象转换为实体对象
/// </summary>
/// <typeparam name="T">实体对象类名</typeparam>
/// <param name="asObject">object对象</param>
/// <returns></returns>
public static T ConvertObject<T>(object asObject) where T : new()
{
var serializer = new JavaScriptSerializer();
//将object对象转换为json字符
var json = serializer.Serialize(asObject);
//将json字符转换为实体对象
var t = serializer.Deserialize<T>(json);
return t;
}

调用方式:

/// <summary>
/// test
/// </summary>
public void test()
{
var obj = new {
id=1,name="张三",sex=1,age=22
};
//转换
user userModel = ConvertObject<user>(obj);
} /// <summary>
/// 用户
/// </summary>
public class user
{
/// <summary>
/// 编号
/// </summary>
public int id { set; get; }
/// <summary>
/// 姓名
/// </summary>
public string name { set; get; }
/// <summary>
/// 性别
/// </summary>
public int sex { set; get; }
/// <summary>
/// 年龄
/// </summary>
public int age { set; get; }
}

是不是很简单?

更多内容可访问我的个人博客:http://www.yunc.top/

最新文章

  1. Python下载进度条
  2. SELECT INTO 和 INSERT INTO区别
  3. struct2的structs.xml文件配置There is no Action mapped for action name 问题
  4. JAVA课程实验报告 实验五 Java网络编程及安全
  5. 剑指offer题目1-10
  6. Zookeeper开源客户端框架Curator简介[转]
  7. SpringMVC重定向视图RedirectView小分析
  8. UVa 400 Unix Is
  9. Learning WCF Chapter1 Creating a New Service from Scratch
  10. hdoj 3785 寻找大富翁【优先队列+sort排序】
  11. viewController启动方法分析
  12. 6月10日-IOS应用-日记本
  13. 多校 Cow Bowling
  14. 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)
  15. Spring--AOP(面向切面)编程
  16. HashMap?面试?我是谁?我在哪
  17. Entity Framework 查漏补缺 (二)
  18. Linux中Nginx安装教程
  19. 子元素position:absolute定位之后脱离文档流,怎么使子元素撑开父元素
  20. ThinkPHP的数据操作

热门文章

  1. 《T-SQL查询》读书笔记Part 3.索引的基本知识
  2. Pattern recognition and machine learning 疑难处汇总
  3. Hbuilder之开发Python
  4. Maven学习(八)-- 使用Nexus搭建Maven私服
  5. java对象深复制、浅复制(深拷贝、浅拷贝)的理解
  6. 并发库应用之十一 &amp; 阻塞队列的应用
  7. Spring中的Lookup(方法注入)
  8. ThinkPHP5+Apicloud+vue商城APP实战
  9. Java生成名片式的二维码源码分享
  10. 笔记一下NODEJS建站