/// <summary> 通过关键字名称找到对应名称的类型 </summary>
        public virtual T CreateKey <T>(string keyName) where T : BaseKey
        {
            //keyName = KeyChecker.FormatKey(keyName);

            Type objType = TypeCacheFactory.GetInstance().GetType(_publickeynamespace + "." + KeyChecker.FormatKey(keyName), false);

            object obj = Activator.CreateInstance(objType, new object[] { keyName });

            return(obj as T);
        }
        /// <summary> 验证字符串是否为注册关键字 </summary>
        internal virtual bool IsRegisterKey(string keyName)
        {
            string temp = KeyChecker.FormatKey(keyName);

            return(_registerList.Contains(temp));
        }
        /// <summary> 创建关键字方法 </summary>
        public BaseKey CreateKey <T>(string keyName, SimKeyType simType = SimKeyType.Eclipse) where T : BaseKey
        {
            if (simType == SimKeyType.Eclipse)
            {
                //  如果是Eclipse注册关键字 直接创建
                if (_eclipseKeyFactory.IsRegisterKey(keyName))
                {
                    return(_eclipseKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  不是Eclipse注册关键字 在公用关键字中找
                if (_publicKeyFactory.IsRegisterKey(keyName))
                {
                    return(_publicKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  如果都不是走后面UnkownKey
            }
            else if (simType == SimKeyType.SimON)
            {
                //  如果是SimON注册关键字 直接创建
                if (_simONKeyFactory.IsRegisterKey(keyName))
                {
                    return(_simONKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  不是Eclipse注册关键字 在公用关键字中找
                if (_publicKeyFactory.IsRegisterKey(keyName))
                {
                    return(_publicKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  如果是Eclipse注册关键字 直接创建
                if (_eclipseKeyFactory.IsRegisterKey(keyName))
                {
                    return(_eclipseKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  如果都不是走后面UnkownKey
            }
            else if (simType == SimKeyType.EclipseAndSimON)
            {
                //  如果是Eclipse注册关键字 直接创建
                if (_eclipseKeyFactory.IsRegisterKey(keyName))
                {
                    return(_eclipseKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  如果是SimON注册关键字 直接创建
                if (_simONKeyFactory.IsRegisterKey(keyName))
                {
                    return(_simONKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }

                //  不是Eclipse注册关键字 在公用关键字中找
                if (_publicKeyFactory.IsRegisterKey(keyName))
                {
                    return(_publicKeyFactory.CreateKey <BaseKey>(keyName) as T);
                }
            }

            UnkownKey unkownKey = new UnkownKey(KeyChecker.FormatKey(keyName));

            return(unkownKey);
        }