| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace RMYY_CallCenter_Api.Utility
- {
- public static partial class ObjectExtention
- {
- private static BindingFlags _bindingFlags { get; }
- = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static;
- /// <summary>
- /// 判断是否为Null或者空
- /// </summary>
- /// <param name="obj">对象</param>
- /// <returns></returns>
- public static bool IsNullOrEmpty(this object obj)
- {
- if (obj == null)
- return true;
- else
- {
- string objStr = obj.ToString();
- return string.IsNullOrEmpty(objStr);
- }
- }
- /// <summary>
- /// 深复制
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="obj">对象</param>
- /// <returns></returns>
- public static T DeepClone<T>(this T obj) where T : class
- {
- if (obj == null)
- return null;
- return obj.ToJson().ToObject<T>();
- }
- /// <summary>
- /// 是否拥有某属性
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="propertyName">属性名</param>
- /// <returns></returns>
- public static bool ContainsProperty(this object obj, string propertyName)
- {
- return obj.GetType().GetProperty(propertyName, _bindingFlags) != null;
- }
- /// <summary>
- /// 获取某属性值
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="propertyName">属性名</param>
- /// <returns></returns>
- public static object GetPropertyValue(this object obj, string propertyName)
- {
- return obj.GetType().GetProperty(propertyName, _bindingFlags).GetValue(obj);
- }
- /// <summary>
- /// 设置某属性值
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="propertyName">属性名</param>
- /// <param name="value">值</param>
- /// <returns></returns>
- public static void SetPropertyValue(this object obj, string propertyName, object value)
- {
- obj.GetType().GetProperty(propertyName, _bindingFlags).SetValue(obj, value);
- }
- /// <summary>
- /// 是否拥有某字段
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="fieldName">字段名</param>
- /// <returns></returns>
- public static bool ContainsField(this object obj, string fieldName)
- {
- return obj.GetType().GetField(fieldName, _bindingFlags) != null;
- }
- /// <summary>
- /// 获取某字段值
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="fieldName">字段名</param>
- /// <returns></returns>
- public static object GetGetFieldValue(this object obj, string fieldName)
- {
- return obj.GetType().GetField(fieldName, _bindingFlags).GetValue(obj);
- }
- /// <summary>
- /// 设置某字段值
- /// </summary>
- /// <param name="obj">对象</param>
- /// <param name="fieldName">字段名</param>
- /// <param name="value">值</param>
- /// <returns></returns>
- public static void SetFieldValue(this object obj, string fieldName, object value)
- {
- obj.GetType().GetField(fieldName, _bindingFlags).SetValue(obj, value);
- }
- }
- }
|