/// <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); }