public static SyncProperty GetSyncProperty(Type InType)
        {
            SyncProperty property;

            if (propertyDict.TryGetValue(InType, out property))
            {
                return(property);
            }

            try
            {
                PropertyInfo[] infos = InType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                int            len   = infos.Length;
                Dictionary <int, PropertyInfo> propertyInfoDict = new Dictionary <int, PropertyInfo>(len);

                for (int i = 0; i < len; i++)
                {
                    object[] attrs = infos[i].GetCustomAttributes(SyncConfig.SYNC_ATTR_TYPE, false);

                    if (1 == attrs.Length)
                    {
                        SyncAttribute syncAttribute = attrs[0] as SyncAttribute;
                        if (null != syncAttribute)
                        {
                            if (propertyInfoDict.ContainsKey(syncAttribute.SyncID))
                            {
                                throw new Exception();
                            }
                            propertyInfoDict.Add(syncAttribute.SyncID, infos[i]);
                        }
                    }
                }

                property = new SyncProperty(InType, propertyInfoDict);
                propertyDict.Add(InType, property);
            }
            catch (Exception ex)
            {
                Debug.LogError(InType + " Create SyncFactory Error : " + ex.Message);
            }


            return(property);
        }
        protected SyncBase()
        {
            Property = SyncFactory.GetSyncProperty(GetType());

            propertyDelegates = new Delegate[Property.InfosLength];
        }