C# 读取匿名对象的属性值-通过扩展方法,将object转成对应的匿名对象 作者:马育民 • 2025-03-28 11:00 • 阅读:10005 # 直接获取匿名对象属性 创建匿名对象: ``` 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; } ``` ### 通过扩展方法,将object转成对应的匿名对象 ``` class Program { static void Main(string[] args) { var obj = GetObj(); var user = obj.ObjCast(new { Name = "", Age = 0 }); Console.WriteLine("Name:{0},Age:{1}", user.Name, user.Age);// Name:Lilei,Age:18 var objList = GetObjList(); var userList = objList.Select(p => p.ObjCast(new { Name = "", Age = 0 })).ToList(); userList.ForEach(p => { Console.WriteLine("Name:{0},Age:{1}", p.Name, p.Age); }); // Name:Lilei,Age:18 // Name:HanMeimei,Age:20 } static object GetObj() { var obj = new { Name = "Lilei", Age = 18 }; return obj; } static List GetObjList() { List objList = new List(); objList.Add(new { Name = "Lilei", Age = 18 }); objList.Add(new { Name = "HanMeimei", Age = 20 }); return objList; } } static class Extensions { public static T ObjCast(this object obj, T sample) { return (T)obj; } } ``` 参考: https://www.cnblogs.com/willingtolove/p/11204018.html 原文出处:http://malaoshi.top/show_1GWqBs5kgGg.html