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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM