C# 将object对象转换为实体对象

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));
                    }
                }
                info.SetValue(t, obj, null);
            }
        }
    }
    return t;
}

调用时:

/// <summary>
/// test
/// </summary>
public void test()
{
    var obj = new {
        id=1,name="张三",sex=1,age=22
    };
    //转换
    var 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; }
}

是不是很简单?

原文地址:https://www.cnblogs.com/aoede-jacqueline/p/10599257.html

时间: 2024-08-24 23:58:16

C# 将object对象转换为实体对象的相关文章

Andorid Binder进程间通信---Binder本地对象,实体对象,引用对象,代理对象的引用计数

本文参考<Android系统源代码情景分析>,作者罗升阳. 一.Binder库(libbinder)代码: ~/Android/frameworks/base/libs/binder ----BpBinder.cpp ----Parcel.cpp ----ProcessState.cpp ----Binder.cpp ----IInterface.cpp ----IPCThreadState.cpp ----IServiceManager.cpp ----Static.cpp ~/Androi

把DOM对象转换为jQuery对象

    DOM对象转换为jQuery对象的简单实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta 

jQuery对象转换为DOM对象

$('.test').get(0)或$('.test')[0]例子:<html> <head> <title>转换为DOM对象</title> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).

Request To JavaBean(请求对象转换为JavaBean对象)

一 参考资料 1 http://jc-dreaming.iteye.com/blog/563893 2 http://www.iteye.com/topic/76043 3 http://xubindehao.iteye.com/blog/754807 4 http://javafenger.iteye.com/blog/96829 5 http://www.kaila.com.cn/space.php?uid=7114&do=blog&id=458578 6 http://blog.cs

HashMap对象转换为JavaBean对象

问题: 在日常代码中,使用 spring包中的 BeanUtils.copyProperties(source,target),可以将A对象的属性复制到B对象中,但是有个问题 无法将HashMap中的属性复制到JavaBan对象中 解决方法: 引入 commons-beanutils依赖 <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</ar

自己实现Java中List对象转换为JSON对象

1.在你的MyEclipse里新建一个Web Project,就叫Ajax_Json吧. 2.新建一个类,名字叫做JsonUtil.java,打包到young.ajax.json,把下面代码复制进去. package young.ajax.json; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.

Linq结果直接返回实体对象

说到Linq返回结果集,我们一般都会这样做: var result=from s in db.Students join c in db.Classes on s.ClassID equals c.ClassID select new { Id = s.Id, Name = c.Name, Address = c.Address }; 然后我们就直接操作result结果集或者是再进一步转换为实体对象. 现在,我们可以直接让Linq返回实体对象,这样就省去转换的麻烦了.代码如下: IEnumera

【Hibernate步步为营】--hql查询之实体对象查询

上篇文章简单介绍了hql它作为Hibernate的查询语言,封装了基本上SQL的所有查询操作,HQL能够实现对数据库文件的增删改查,该篇文章着重讨论HQL实体对象的查询方法. 一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.1

Objective-C中ORM的运用:实体对象和字典的相互自动转换

http://blog.csdn.net/cooldragon/article/details/18991973 iOS开发中基于ORM的框架很多,如SQLitePersistentObject,实际开发中需求不同或场景不同,方式方法也就不同,有时项目中用不上ORM框架,或者出于公司或项目组习惯或规范.实际项目需求或技术要求等等原因,不会采用完整的ORM框架,但一些重复啰嗦的代码使用一定的ORM功能还是很能提高效率的. 基于性能或灵活性考虑,或复杂查询的需求,或项目组要求,项目中数据库存取一般直