C#實(shí)現(xiàn)讀取匿名對(duì)象屬性值的方法示例總結(jié)
本文實(shí)例講述了C#實(shí)現(xiàn)讀取匿名對(duì)象屬性值的方法。分享給大家供大家參考,具體如下:
通過new出匿名對(duì)象,可以直接調(diào)用該匿名對(duì)象的屬性名,獲取屬性值。
var objUser = new {Name="Lilei",Age=18 }; //此時(shí)可直接讀取匿名類屬性 Console.WriteLine("Name:" + objUser.Name);// Name:Lilei
但當(dāng)將匿名對(duì)象轉(zhuǎn)換成object后,就無(wú)法直接讀取屬性值了;
static object GetObj() { var obj = new { Name = "Lilei", Age = 18 }; return obj; } static void Main(string[] args) { var obj = GetObj();//此時(shí)已無(wú)法通過obj.Name的方式獲取屬性值了 }
1、通過反射的方式獲取屬性值
static object GetObj() { var obj = new { Name = "Lilei", Age = 18 }; return obj; } static void Main(string[] args) { var obj = GetObj(); //此時(shí)可通過反射的方式獲取屬性值 string objName = obj.GetType().GetProperty("Name").GetValue(obj).ToString(); Console.WriteLine(objName);// Lilei }
2、新建個(gè)擴(kuò)展方法,將object轉(zhuǎn)成對(duì)應(yīng)的匿名對(duì)象
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; } }
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#遍歷算法與技巧總結(jié)》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#8.0 中開啟默認(rèn)接口實(shí)現(xiàn)方法
這篇文章主要介紹了C#8.0 中開啟默認(rèn)接口實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧的相關(guān)資料2019-05-05C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法實(shí)例詳解
這篇文章主要介紹了C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了C#中構(gòu)造函數(shù)與析構(gòu)函數(shù)的原理、定義、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)繪圖graphic的方法示例
這篇文章主要介紹了C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)繪圖graphic的方法,結(jié)合實(shí)例形式分析了C#根據(jù)動(dòng)態(tài)數(shù)據(jù)繪制2D數(shù)據(jù)表格的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09