internal void AddImport(Type type, Hashtable types) { if (((type != null) && !TypeScope.IsKnownType(type)) && (types[type] == null)) { types[type] = type; Type baseType = type.BaseType; if (baseType != null) { this.AddImport(baseType, types); } Type declaringType = type.DeclaringType; if (declaringType != null) { this.AddImport(declaringType, types); } foreach (Type type4 in type.GetInterfaces()) { this.AddImport(type4, types); } ConstructorInfo[] constructors = type.GetConstructors(); for (int i = 0; i < constructors.Length; i++) { ParameterInfo[] parameters = constructors[i].GetParameters(); for (int j = 0; j < parameters.Length; j++) { this.AddImport(parameters[j].ParameterType, types); } } if (type.IsGenericType) { Type[] genericArguments = type.GetGenericArguments(); for (int k = 0; k < genericArguments.Length; k++) { this.AddImport(genericArguments[k], types); } } TempAssembly.FileIOPermission.Assert(); Assembly a = type.Module.Assembly; if (DynamicAssemblies.IsTypeDynamic(type)) { DynamicAssemblies.Add(a); } else { object[] customAttributes = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if (customAttributes.Length > 0) { TypeForwardedFromAttribute attribute = customAttributes[0] as TypeForwardedFromAttribute; Assembly assembly2 = Assembly.Load(attribute.AssemblyFullName); this.imports[assembly2] = assembly2.Location; } this.imports[a] = a.Location; } } }
// SxS: This method does not take any resource name and does not expose any resources to the caller. // It's OK to suppress the SxS warning. internal void AddImport(Type type, Hashtable types) { if (type == null) { return; } if (TypeScope.IsKnownType(type)) { return; } if (types[type] != null) { return; } types[type] = type; Type baseType = type.GetTypeInfo().BaseType; if (baseType != null) { AddImport(baseType, types); } Type declaringType = type.DeclaringType; if (declaringType != null) { AddImport(declaringType, types); } foreach (Type intf in type.GetInterfaces()) { AddImport(intf, types); } ConstructorInfo[] ctors = type.GetConstructors(); for (int i = 0; i < ctors.Length; i++) { ParameterInfo[] parms = ctors[i].GetParameters(); for (int j = 0; j < parms.Length; j++) { AddImport(parms[j].ParameterType, types); } } if (type.GetTypeInfo().IsGenericType) { Type[] arguments = type.GetGenericArguments(); for (int i = 0; i < arguments.Length; i++) { AddImport(arguments[i], types); } } Module module = type.GetTypeInfo().Module; Assembly assembly = module.Assembly; if (DynamicAssemblies.IsTypeDynamic(type)) { DynamicAssemblies.Add(assembly); return; } object[] typeForwardedFromAttribute = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if (typeForwardedFromAttribute.Length > 0) { TypeForwardedFromAttribute originalAssemblyInfo = typeForwardedFromAttribute[0] as TypeForwardedFromAttribute; Assembly originalAssembly = Assembly.Load(new AssemblyName(originalAssemblyInfo.AssemblyFullName)); //_imports[originalAssembly] = originalAssembly.Location; } //_imports[assembly] = assembly.Location; }
internal void AddImport(Type type, Hashtable types) { if (type == null) { return; } if (TypeScope.IsKnownType(type)) { return; } if (types[type] != null) { return; } types[type] = type; Type baseType = type.BaseType; if (baseType != null) { AddImport(baseType, types); } Type declaringType = type.DeclaringType; if (declaringType != null) { AddImport(declaringType, types); } foreach (Type intf in type.GetInterfaces()) { AddImport(intf, types); } ConstructorInfo[] ctors = type.GetConstructors(); for (int i = 0; i < ctors.Length; i++) { ParameterInfo[] parms = ctors[i].GetParameters(); for (int j = 0; j < parms.Length; j++) { AddImport(parms[j].ParameterType, types); } } if (type.IsGenericType) { Type[] arguments = type.GetGenericArguments(); for (int i = 0; i < arguments.Length; i++) { AddImport(arguments[i], types); } } TempAssembly.FileIOPermission.Assert(); Module module = type.Module; Assembly assembly = module.Assembly; if (DynamicAssemblies.IsTypeDynamic(type)) { DynamicAssemblies.Add(assembly); return; } imports[assembly] = assembly.Location; }