人民医院API

Object.cs 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace RMYY_CallCenter_Api.Utility
  8. {
  9. public static partial class ObjectExtention
  10. {
  11. private static BindingFlags _bindingFlags { get; }
  12. = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static;
  13. /// <summary>
  14. /// 判断是否为Null或者空
  15. /// </summary>
  16. /// <param name="obj">对象</param>
  17. /// <returns></returns>
  18. public static bool IsNullOrEmpty(this object obj)
  19. {
  20. if (obj == null)
  21. return true;
  22. else
  23. {
  24. string objStr = obj.ToString();
  25. return string.IsNullOrEmpty(objStr);
  26. }
  27. }
  28. /// <summary>
  29. /// 深复制
  30. /// </summary>
  31. /// <typeparam name="T">类型</typeparam>
  32. /// <param name="obj">对象</param>
  33. /// <returns></returns>
  34. public static T DeepClone<T>(this T obj) where T : class
  35. {
  36. if (obj == null)
  37. return null;
  38. return obj.ToJson().ToObject<T>();
  39. }
  40. /// <summary>
  41. /// 是否拥有某属性
  42. /// </summary>
  43. /// <param name="obj">对象</param>
  44. /// <param name="propertyName">属性名</param>
  45. /// <returns></returns>
  46. public static bool ContainsProperty(this object obj, string propertyName)
  47. {
  48. return obj.GetType().GetProperty(propertyName, _bindingFlags) != null;
  49. }
  50. /// <summary>
  51. /// 获取某属性值
  52. /// </summary>
  53. /// <param name="obj">对象</param>
  54. /// <param name="propertyName">属性名</param>
  55. /// <returns></returns>
  56. public static object GetPropertyValue(this object obj, string propertyName)
  57. {
  58. return obj.GetType().GetProperty(propertyName, _bindingFlags).GetValue(obj);
  59. }
  60. /// <summary>
  61. /// 设置某属性值
  62. /// </summary>
  63. /// <param name="obj">对象</param>
  64. /// <param name="propertyName">属性名</param>
  65. /// <param name="value">值</param>
  66. /// <returns></returns>
  67. public static void SetPropertyValue(this object obj, string propertyName, object value)
  68. {
  69. obj.GetType().GetProperty(propertyName, _bindingFlags).SetValue(obj, value);
  70. }
  71. /// <summary>
  72. /// 是否拥有某字段
  73. /// </summary>
  74. /// <param name="obj">对象</param>
  75. /// <param name="fieldName">字段名</param>
  76. /// <returns></returns>
  77. public static bool ContainsField(this object obj, string fieldName)
  78. {
  79. return obj.GetType().GetField(fieldName, _bindingFlags) != null;
  80. }
  81. /// <summary>
  82. /// 获取某字段值
  83. /// </summary>
  84. /// <param name="obj">对象</param>
  85. /// <param name="fieldName">字段名</param>
  86. /// <returns></returns>
  87. public static object GetGetFieldValue(this object obj, string fieldName)
  88. {
  89. return obj.GetType().GetField(fieldName, _bindingFlags).GetValue(obj);
  90. }
  91. /// <summary>
  92. /// 设置某字段值
  93. /// </summary>
  94. /// <param name="obj">对象</param>
  95. /// <param name="fieldName">字段名</param>
  96. /// <param name="value">值</param>
  97. /// <returns></returns>
  98. public static void SetFieldValue(this object obj, string fieldName, object value)
  99. {
  100. obj.GetType().GetField(fieldName, _bindingFlags).SetValue(obj, value);
  101. }
  102. }
  103. }