public static object InstantiateType(Type type, bool supportInternal) { ConstructorAccessibility constructorAccessibility; object obj; ConstructorInfo defaultConstructor = PlatformTypeHelper.GetDefaultConstructor(type, supportInternal, out constructorAccessibility); if (!(defaultConstructor != null) && constructorAccessibility != ConstructorAccessibility.TypeIsValueType) { CultureInfo currentCulture = CultureInfo.CurrentCulture; string instanceBuilderCannotInstantiateType = ExceptionStringTable.InstanceBuilderCannotInstantiateType; object[] name = new object[] { type.Name }; throw new InstanceBuilderException(string.Format(currentCulture, instanceBuilderCannotInstantiateType, name), null, null); } try { obj = (defaultConstructor == null ? Activator.CreateInstance(type) : defaultConstructor.Invoke(null)); } catch (Exception exception1) { Exception exception = exception1; if (!(exception.InnerException is LicenseException)) { CultureInfo cultureInfo = CultureInfo.CurrentCulture; string str = ExceptionStringTable.InstanceBuilderCannotInstantiateType; object[] objArray = new object[] { type.Name }; throw new InstanceBuilderException(string.Format(cultureInfo, str, objArray), exception, null); } throw new InstanceBuilderException(exception.InnerException.Message); } return(obj); }
private void AddFoundEasingFunctionBaseTypes(IAssembly assembly, IPlatform platform) { if (assembly == null || !assembly.IsLoaded || platform == null) { return; } bool flag = false; Dictionary <string, List <IEasingFunctionDefinition> > orCreateCache = DesignSurfacePlatformCaches.GetOrCreateCache <Dictionary <string, List <IEasingFunctionDefinition> > >(platform.Metadata, DesignSurfacePlatformCaches.EasingFunctionsCache); IAssembly usingAssemblyName = platform.Metadata.GetPlatformAssemblyUsingAssemblyName(assembly); if (usingAssemblyName != null && AssemblyHelper.IsPlatformAssembly(usingAssemblyName)) { if (orCreateCache.ContainsKey(assembly.FullName)) { this.knownEasingFunctions.AddRange((IEnumerable <IEasingFunctionDefinition>)orCreateCache[assembly.FullName]); return; } flag = true; } bool supportInternal = this.ActiveProjectContext.ProjectAssembly.CompareTo(assembly); IType type1 = platform.Metadata.ResolveType(PlatformTypes.EasingFunctionBase); if (platform.Metadata.IsNullType((ITypeId)type1)) { return; } Type runtimeType = type1.RuntimeType; Type[] types; try { types = AssemblyHelper.GetTypes(assembly); } catch (Exception ex) { return; } foreach (Type type2 in types) { if (runtimeType.IsAssignableFrom(type2)) { ConstructorAccessibility accessibility; ConstructorInfo defaultConstructor = PlatformTypeHelper.GetDefaultConstructor(type2, supportInternal, out accessibility); if (defaultConstructor != (ConstructorInfo)null) { IEasingFunctionDefinition functionDefinition = platform.ViewObjectFactory.Instantiate(defaultConstructor.Invoke((object[])null)) as IEasingFunctionDefinition; if (functionDefinition != null) { this.knownEasingFunctions.Add(functionDefinition); if (flag) { if (!orCreateCache.ContainsKey(assembly.FullName)) { orCreateCache.Add(assembly.FullName, new List <IEasingFunctionDefinition>()); } orCreateCache[assembly.FullName].Add(functionDefinition); } } } } } }