C#实现读取匿名对象属性值的方法示例总结
程序员文章站
2023-11-18 17:33:46
本文实例讲述了c#实现读取匿名对象属性值的方法。分享给大家供大家参考,具体如下:通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值。var objuser = new {name="li...
本文实例讲述了c#实现读取匿名对象属性值的方法。分享给大家供大家参考,具体如下:
通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值。
var objuser = new {name="lilei",age=18 }; //此时可直接读取匿名类属性 console.writeline("name:" + objuser.name);// name:lilei
但当将匿名对象转换成object后,就无法直接读取属性值了;
static object getobj() { var obj = new { name = "lilei", age = 18 }; return obj; } static void main(string[] args) { var obj = getobj();//此时已无法通过obj.name的方式获取属性值了 }
1、通过反射的方式获取属性值
static object getobj() { var obj = new { name = "lilei", age = 18 }; return obj; } static void main(string[] args) { var obj = getobj(); //此时可通过反射的方式获取属性值 string objname = obj.gettype().getproperty("name").getvalue(obj).tostring(); console.writeline(objname);// lilei }
2、新建个扩展方法,将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<object> getobjlist() { list<object> objlist = new list<object>(); objlist.add(new { name = "lilei", age = 18 }); objlist.add(new { name = "hanmeimei", age = 20 }); return objlist; } } static class extensions { public static t objcast<t>(this object obj, t sample) { return (t)obj; } }