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

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

第一种方法,代码如下:

/// 
/// 将object对象转换为实体对象
/// 
/// 实体对象类名
/// object对象
/// 
private T ConvertObject(object asObject) where T : new()
{
    //创建实体对象实例
    var t = Activator.CreateInstance();
    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.

代码如下:

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

调用方式:

/// 
/// test
/// 
public void test()
{
    var obj = new {
        id=1,name="张三",sex=1,age=22
    };
    //转换
    var userModel = ConvertObject(obj);
}

/// 
/// 用户
/// 
public class user
{
    /// 
    /// 编号
    /// 
    public int id { set; get; }
    /// 
    /// 姓名
    /// 
    public string name { set; get; }
    /// 
    /// 性别
    /// 
    public int sex { set; get; }
    /// 
    /// 年龄
    /// 
    public int age { set; get; }
}

是不是很简单?

转载于:https://www.cnblogs.com/aoede-jacqueline/p/10599257.html

你可能感兴趣的:(C# 将object对象转换为实体对象)