Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        public static TObjectType CreateInstance <TObjectType>(SerializedTypeInfo objTypeInfo, Type[] objArgumentTypes, params object[] objArguments)
        {
            ActivatorDelegate <TObjectType> objActivator = Instance.CreateActivatorDelegate <TObjectType>(objTypeInfo, objArgumentTypes);

            return(objActivator(objArguments));
        }