public ActivatorDelegate <TObjectType> CreateActivatorDelegate <TObjectType>(SerializedTypeInfo objTypeInfo, Type[] objArgumentTypes) { Type objType = null; string strTypeKey = string.Format("{0}.{1}", objTypeInfo.AssemblyName, objTypeInfo.TypeName); if (_objTypeCache.ContainsKey(strTypeKey) == false) { Assembly objAssembly = null; try { objAssembly = Assembly.Load(objTypeInfo.AssemblyName); } catch (Exception objException) { string strErrorMessage = "An error was encountered while loading the assembly - Assembly.Load('" + objTypeInfo.AssemblyName + "'):\n"; throw new Exception(strErrorMessage, objException); } try { objType = objAssembly.GetType(objTypeInfo.TypeName, true, true); } catch (Exception objException) { string strErrorMessage = "An error was encountered while loading the type - objAssemblyName.GetType('" + objTypeInfo.TypeName + "', True, True):\n"; throw new Exception(strErrorMessage, objException); } _objTypeCache.Add(strTypeKey, objType); } else { objType = _objTypeCache[strTypeKey]; } return(CreateActivatorDelegate <TObjectType>(objType, objArgumentTypes)); }
public static TObjectType CreateInstance <TObjectType>(SerializedTypeInfo objTypeInfo, Type[] objArgumentTypes, params object[] objArguments) { ActivatorDelegate <TObjectType> objActivator = Instance.CreateActivatorDelegate <TObjectType>(objTypeInfo, objArgumentTypes); return(objActivator(objArguments)); }