首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 擴展方法進階技巧:ToString(string format) 擴展終極版支援巢狀屬性與集合操作 (下)

     編輯:關於C語言

版本四支援巢狀屬性存取(Son.Son.Name):

string s4 = p4.ToString4("[Name] 的孫子 [Son.Son.Name] 的生日是:[Son.Son.Brithday: yyyy年MM月dd日]。");

實作關鍵:以 . 分割屬性路徑,迴圈反射逐層取值。

版本五支援集合操作

string s5 = p5.ToString5("[Name] 目前有 [Friends: .Count] 個朋友:[Friends: .Name]。");
  • .Count:回傳集合元素數量
  • .Name:投影每個元素的 Name 屬性並以逗號連接

格式語法:[Property: .Operation] 中的前置點號表示集合操作。

核心實作邏輯

if (propertyFormat.StartsWith(".")) {
    var subProp = propertyFormat.Substring(1);
    var objs = ((IEnumerable)propertyValue).Cast<object>();
    if (subProp == "Count") return objs.Count().ToString();
    return string.Join(", ", objs.Select(o => o.GetPropertyValue(subProp).ToString()));
}

效能提醒

反射與正則表達式帶來效能損耗,實務應用請加入快取機制。版本六、七可進一步支援索引器、條件判斷等,不再贅述。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved