C# 反射方式读取匿名对象的属性值

直接获取匿名对象属性

创建匿名对象:

var objUser = new {Name="Lilei",Age=18 };

一般在一个代码块中,可以直接获取匿名对象属性

Console.WriteLine("Name:" + objUser.Name);

提出问题

当匿名对象转换成 object 后,就 无法 直接读取属性值了

static object GetObj()
{
    var obj = new { Name = "Lilei", Age = 18 };
    return obj;
}

解决方式1:通过反射的方式遍历属性

static void Main(string[] args)
{
    var obj = GetObj();
    // 通过反射的方式获取所有属性
    PropertyInfo[] properties = obj.GetType().GetProperties();

    // 遍历属性打印到控制台。
    foreach (PropertyInfo prop in properties)
    {
        //Console.WriteLine(prop.Name);
        Console.WriteLine(prop.GetValue(t));
    }
}

解决方式2:通过反射的方式获取指定属性值

static void Main(string[] args)
{
    var obj = GetObj();
    //此时可通过反射的方式获取属性值
    object objName = obj.GetType().GetProperty("Name").GetValue(obj);
    Console.WriteLine(objName);// Lilei
}

参考:
https://www.cnblogs.com/willingtolove/p/11204018.html