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

Posted aoede-jacqueline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; }
}

是不是很简单?

以上是关于C# 将object对象转换为实体对象的主要内容,如果未能解决你的问题,请参考以下文章

将 XML 转换为动态 C# 对象

无法将“System.Object []”类型的对象转换为我的类 C#

将字典转换为 c# 对象

C# 将object类型对象(注:必须是可序列话的对象)转换为二进制序列字符串

C#如何将集合转换成实体对象

在 C# 中将对象数组转换为浮点数组 [关闭]