/// <summary>
        /// 获取属性的变更名称,
        /// 此处只检测调用了Set方法的属性,不会检测值是否真的有变
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static List <ChangedInfo> GetChangedInfo <T>(this T o) where T : class, new()
        {
            FieldInfo        fieldInfo = o.GetType().GetField(ProxyDefineConst.OrgmodelFiledName);
            T                value     = (T)fieldInfo.GetValue(o);
            HashSet <string> hs        = ProxyUtils.GetModifiedProperties(o);

            return(ProxyUtils.GetChangeInfos(value, o, hs));
        }
        /// <summary>
        /// 创建属性变更监控跟踪器并且托管当前model
        /// </summary>
        public static T CreateModelProxy <T>(this T o) where T : class, new()
        {
            var k  = ModelProxy.CreateDynamicProxy <T>();
            T   tk = new T();

            o.MapTo(tk);
            o.MapTo(k);
            o = null;
            ProxyUtils.ClearHashSet(k);
            ProxyUtils.SetOrg(k, tk);
            o = k;
            return(o);
        }