架構師_程序員

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

查看: 232|回復: 1

[資料] c# 反射判斷屬性的類型是否為字符串、集合

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2019-10-25 13:36:59
zu
首先,結構如下:

  1. public struct SchoolCardModel
  2.     {
  3.         public SchoolCardModel(string projectName,string profession,string fileName,string fileNo)
  4.         {
  5.             ProjectName = projectName;
  6.             Profession = profession;
  7.             FileName = fileName;
  8.             FileNo = fileNo;
  9.             items = new List<Item>();
  10.         }
  11.         /// <summary>
  12.         /// 項目名稱
  13.         /// </summary>
  14.         public string ProjectName { get; set; }
  15.         /// <summary>
  16.         /// 專業
  17.         /// </summary>
  18.         public string Profession { get; set; }
  19.         /// <summary>
  20.         /// 文件名稱
  21.         /// </summary>
  22.         public string FileName { get; set; }
  23.         /// <summary>
  24.         /// 文件編號
  25.         /// </summary>
  26.         public string FileNo { get; set; }
  27.         /// <summary>
  28.         /// 批準列表
  29.         /// </summary>
  30.         public List<Item> items { get; set; }

  31.         public struct Item
  32.         {
  33.             /// <summary>
  34.             /// 日期
  35.             /// </summary>
  36.             public string date { get; set; }
  37.             /// <summary>
  38.             /// 校審人員
  39.             /// </summary>
  40.             public string reviewer { get; set; }
  41.             /// <summary>
  42.             /// 校審意見
  43.             /// </summary>
  44.             public string reviewerContent { get; set; }
  45.             /// <summary>
  46.             /// 回復人員
  47.             /// </summary>
  48.             public string reply { get; set; }
  49.             /// <summary>
  50.             /// 意見處理結果及回答
  51.             /// </summary>
  52.             public string replyContent { get; set; }
  53.         }
  54.     }
復制代碼


反射循環獲取屬性類型和值,代碼如下:

  1. public static Dictionary<string, object> ToDictionary<T>(this T model)
  2.             where T : struct
  3.         {
  4.             Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
  5.             Type Ts = model.GetType();
  6.             foreach (PropertyInfo item in Ts.GetProperties())
  7.             {
  8.                 if (typeof(string).Equals(item.PropertyType))
  9.                 {
  10.                     //屬性是string
  11.                     keyValuePairs.Add(item.Name, item.GetValue(model, null));
  12.                     Console.WriteLine(item.GetValue(model, null));
  13.                 }
  14.                 if (item.PropertyType.IsGenericType && item.PropertyType.GetGenericTypeDefinition().Equals(typeof(List<>)))
  15.                 {
  16.                     //屬性是集合
  17.                 }
  18.                 //keyValuePairs.Add(item.Name, item.GetValue(model, null));
  19.             }
  20.             return keyValuePairs;
  21.         }
復制代碼
獲取一個值,該值指示類型是否為數組。

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;

  4. public class Example
  5. {
  6.    public static void Main()
  7.    {
  8.       Type[] types = { typeof(String), typeof(int[]),
  9.                        typeof(ArrayList), typeof(Array),
  10.                        typeof(List<String>),
  11.                        typeof(IEnumerable<Char>) };
  12.       foreach (var t in types)
  13.          Console.WriteLine("{0,-15} IsArray = {1}", t.Name + ":",
  14.                            t.IsArray);
  15.    }
  16. }
復制代碼
返回
// The example displays the following output:
//       String:         IsArray = False
//       Int32[]:        IsArray = True
//       ArrayList:      IsArray = False
//       Array:          IsArray = False
//       List`1:         IsArray = False
//       IEnumerable`1:  IsArray = False






上一篇:證照之星 7.0 綠色好用版
下一篇:2020江蘇省考系統班視頻教程
帖子永久地址: 

架構師_程序員 - 論壇版權1、本主題所有言論和圖片純屬會員個人意見,與本論壇立場無關
2、本站所有主題由該帖子作者發表,該帖子作者與架構師_程序員享有帖子相關版權
3、其他單位或個人使用、轉載或引用本文時必須同時征得該帖子作者和架構師_程序員的同意
4、帖子作者須承擔一切因本文發表而直接或間接導致的民事或刑事法律責任
5、本帖部分內容轉載自其它媒體,但并不代表本站贊同其觀點和對其真實性負責
6、如本帖侵犯到任何版權問題,請立即告知本站,本站將及時予與刪除并致以最深的歉意
7、架構師_程序員管理員和版主有權不事先通知發貼者而刪除本文

碼農網,只發表在實踐過程中,遇到的技術難題,不誤導他人。
沙發
發表于 2019-10-25 14:51:51
標記一下!備查!
碼農網,只發表在實踐過程中,遇到的技術難題,不誤導他人。
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則

免責聲明:
碼農網所發布的一切軟件、編程資料或者文章僅限用于學習和研究目的;不得將上述內容用于商業或者非法用途,否則,一切后果請用戶自負。本站信息來自網絡,版權爭議與本站無關。您必須在下載后的24個小時之內,從您的電腦中徹底刪除上述內容。如果您喜歡該程序,請支持正版軟件,購買注冊,得到更好的正版服務。如有侵權請郵件與我們聯系處理。

Mail To:help@itsvse.com

QQ|Archiver|手機版|小黑屋|架構師 ( 魯ICP備14021824號-2 )|網站地圖

GMT+8, 2020-1-22 05:18

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
吉林快三走势图