程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c# 匿名對象增加動態屬性,

c# 匿名對象增加動態屬性,

編輯:C#入門知識

c# 匿名對象增加動態屬性,


在開發過程中碰到了一個需求,需要動態創建對象及其動態屬性。在嘗試幾種方法後,最後完成了需求,記錄下過程,給園友參考下

1.動態創建對象一:匿名對象

object obj1 = new {Name = "金朝錢",Age="31",Birthday =DateTime.Now};

創建的匿名對象:

問題1:無法動態映射對象屬性

 

解決:使用反射的方式獲取對象值

object obj1 = new {Name = "金朝錢",Age="31",Birthday =DateTime.Now};
Response.Write(string.Format("Name:{0}", obj1.GetType().GetProperty("Name").GetValue(obj1, null).ToString()));

輸出結果

問題2:無法動態創建對象屬性

 

2.使用動態對象創建方法二、動態對象 

dynamic obj2 = new System.Dynamic.ExpandoObject();
obj2.Name = "金朝錢";
obj2.Age = 31;
obj2.Birthday = DateTime.Now;
Response.Write(string.Format("Name:{0}", obj2.Name));

 創建的動態對象:

輸出結果:

問題:還是不能動態增加對象

 

3.動態創建對象及其屬性

Dictionary<string, object> temp = new Dictionary<string, object>(); temp.Add("Name", "金朝錢"); temp["Age"] = 31; temp["Birthday"] = DateTime.Now; dynamic obj = new System.Dynamic.ExpandoObject(); foreach (KeyValuePair<string, object> item in temp) { ((IDictionary<string, object>)obj).Add(item.Key, item.Value); } Response.Write(string.Format("Name:{0}", obj.GetType().GetProperty("name").GetValue(obj, null).ToString()));

 

 對象查看:

輸出:

 

輸出是發生錯誤,不能用反射獲取對象屬性,經查,該對象的Field和Property全部都是null,那麼我們和上面一樣使用Dictionary進行輸出

 

終於搞定收工,有類似需要的朋友可以參考下。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved