zoukankan      html  css  js  c++  java
  • 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));
                        }
                        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/

  • 相关阅读:
    android 蓝牙各种UUID (转)
    Linux下Shell重定向
    linux命令学习笔记——tee命令
    正则表达式之正向预查和反向预查
    shell常用正则表达式
    saltstack知识点
    linux命令学习笔记——ldd命令
    shell中${ } 的一些特异功能
    linux命令学习笔记——nl命令
    linux命令学习笔记——losetup命令:设置循环设备
  • 原文地址:https://www.cnblogs.com/aoede-jacqueline/p/10599257.html
Copyright © 2011-2022 走看看