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/

  • 相关阅读:
    Python
    算法的时间复杂度和空间复杂度-总结
    列表自动滚动
    React 结合ant-mobile 省市区级联
    5G从小就梦想着自己要迎娶:高速率、低时延、大容量三个老婆
    一文读懂GaussDB(for Mongo)的计算存储分离架构
    cpu占用过高排查
    我是如何从零开始自学转行IT并进入世界500强实现薪资翻倍?
    Linux重定向用法详解
    说出来也许你不信,我被 Linux 终端嘲笑了……
  • 原文地址:https://www.cnblogs.com/aoede-jacqueline/p/10599257.html
Copyright © 2011-2022 走看看