/// <summary>
        /// 获取属性值的扩展
        /// </summary>
        /// <typeparam name="TEntity">实例的类型</typeparam>
        /// <typeparam name="TValue">值的类型</typeparam>
        /// <param name="property">需要获取的属性</param>
        /// <param name="instance">实例对象</param>
        /// <param name="isCache">是否把属性的委托加载到缓存</param>
        /// <returns>获取的值</returns>
        public static TValue GetPropertyValue <TEntity, TValue>(this PropertyInfo property, TEntity instance, bool isCache = true)
            where TEntity : class
        {
            var propertyInfo = ReflectionFactory.Create <TEntity, TEntity, TValue>(property, property, isCache);

            return(propertyInfo.GetValue(instance));
        }
        /// <summary>
        /// 设定属性值的扩展
        /// </summary>
        /// <typeparam name="TEntity">实例的类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="property">需要设定的属性</param>
        /// <param name="instance">实例对象</param>
        /// <param name="value">需要设定的值</param>
        /// <param name="isCache">是否把属性的委托加载到缓存</param>
        public static void SetPropertyValue <TEntity, TValue>(this PropertyInfo property, TEntity instance,
                                                              TValue value, bool isCache = true)
            where TEntity : class
        {
            var propertyInfo = ReflectionFactory.Create <TEntity, TEntity, TValue>(property, property, isCache);

            propertyInfo.SetValue(instance, value);
        }
        /// <summary>
        /// 获取值再设定值
        /// </summary>
        /// <typeparam name="TFrom">源实例的类型</typeparam>
        /// <typeparam name="TTo">目标实例的类型</typeparam>
        /// <typeparam name="TValue">值类型</typeparam>
        /// <param name="getProperty">获取属性</param>
        /// <param name="setProperty">设定属性</param>
        /// <param name="fromEntity">源实例</param>
        /// <param name="toEntity">目标实例</param>
        /// <param name="isCache">是否把属性的委托加载到缓存</param>
        public static void GetAndSetProperty <TFrom, TTo, TValue>(this TFrom fromEntity, TTo toEntity, PropertyInfo getProperty, PropertyInfo setProperty,
                                                                  bool isCache)
            where TFrom : class
            where TTo : class
        {
            var propertyAccessor = ReflectionFactory.Create <TFrom, TTo, TValue>(getProperty, setProperty, isCache);

            propertyAccessor.SetValue(toEntity, propertyAccessor.GetValue(fromEntity));
        }