コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                            }
                        }
                    }
                }
            }
        }