请选择 进入手机版 | 继续访问电脑版

[C#教程] C# PropertyInfo类案例详解

[复制链接]
查看43 | 回复8 | 2021-9-14 09:45:05 | 显示全部楼层 |阅读模式

对一个对象举行 属性分析,并得到相应的属性值,并判定 属性的默认值以及空值

  1. public class People
  2. {
  3. public string name { get; set; }
  4. public int age { get; set; }
  5. public DateTime birthday { get; set; }
  6. public bool isActive { get; set; }
  7. public List<Address> address{get;set;}
  8. }
  9. public class Address
  10. {
  11. public string country { get; set; }
  12. public string province { get; set; }
  13. public string city { get; set; }
  14. }
  15. class Program
  16. {
  17. static void Main(string[] args)
  18. {
  19. List<Address> address = new List<Address>()
  20. {
  21. new Address(){
  22. country="china",
  23. province="anHui",
  24. city="bengBu",
  25. },
  26. new Address(){
  27. country="china",
  28. city="shangHai",
  29. },
  30. };
  31. People people = new People()
  32. {
  33. name="wangqilong",
  34. age=23,
  35. birthday=Convert.ToDateTime("2018-09-15"),
  36. isActive=true,
  37. address=address
  38. };
  39. string str = method(people);
  40. }
  41. public static string method(Object obj)
  42. {
  43. string str = "";
  44. Type postType = obj.GetType();
  45. PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组
  46. foreach (PropertyInfo p in postTypeInfos)
  47. {
  48. if (p.PropertyType.FullName == typeof(DateTime).FullName)
  49. {
  50. DateTime pValue = (DateTime)p.GetValue(obj, null);
  51. if (pValue != null && pValue != DateTime.MinValue) //dateTime类型申明时默认值为最小值
  52. {
  53. str += p.Name + ":" + pValue + ";";
  54. }
  55. }
  56. else if (p.PropertyType.FullName == typeof(Int32).FullName)
  57. {
  58. int pValue = (int)p.GetValue(obj, null);
  59. if (pValue != 0) //int类型申明时默认值为最小值0
  60. {
  61. str += p.Name + ":" + pValue + ";";
  62. }
  63. }
  64. else if (p.PropertyType.FullName == typeof(Boolean).FullName)
  65. {
  66. Object pValue = p.GetValue(obj, null);
  67. str += p.Name + ":" + pValue + ";";
  68. }
  69. else if (p.PropertyType.FullName == typeof(String).FullName)
  70. {
  71. Object pValue = p.GetValue(obj, null);
  72. str += p.Name + ":" + pValue + ";";
  73. }
  74. //如果传入的对象包含集合,集合中是另个对象
  75. else if (p.PropertyType.FullName == typeof(List<Address>).FullName)
  76. {
  77. List<Address> list = (List<Address>)p.GetValue(obj, null);
  78. if (list != null)
  79. {
  80. foreach (Address address in list)
  81. {
  82. str += p.Name + ":" + address.country+","+address.province+","+address.city + ";";
  83. }
  84. }
  85. }
  86. }
  87. return str;
  88. }
  89. }
复制代码

结果 :”name:wangqilong;age:23;birthday:2018/9/15 0:00:00;isActive:True;address:china,anHui,bengBu;address:china,,shangHai;”

关于PropertyInfo类信息: https://docs.microsoft.com/zh-cn/dotnet/api/system.reflection.propertyinfo?view=netframework-1.1

到此这篇关于C# PropertyInfo类案例详解的文章就先容 到这了,更多相干 C# PropertyInfo类内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 南辕北辙395 | 2021-9-20 18:14:57 | 显示全部楼层
记得吃药!
回复

使用道具 举报

avatar 韭菜555 | 2021-9-22 00:22:40 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,他卖的服务器是永久的,我们的网站用 服务器都是在这家买的,你可以去试试。访问地址:http://fwq.mxswl.com
回复

使用道具 举报

avatar 心一路向南飞该 | 2021-9-26 16:53:53 | 显示全部楼层
内容很有深度!
回复

使用道具 举报

avatar 马小心小a | 2021-10-1 22:14:12 | 显示全部楼层
admin楼主的头像能辟邪啊!
回复

使用道具 举报

avatar 仙翁童子子os | 2021-10-15 22:03:00 | 显示全部楼层
缺乏激情了!
回复

使用道具 举报

avatar jiaguangqin | 前天 20:47 | 显示全部楼层
收藏了,以后可能会用到!
回复

使用道具 举报

admin楼主人气很旺!
回复

使用道具 举报

avatar 珍惜637 | 昨天 15:44 | 显示全部楼层
被admin楼主的逻辑打败了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则