internal Type FastBindToType(string assemblyName, string typeName) { Type type = null; ObjectReader.TypeNAssembly typeNAssembly = (ObjectReader.TypeNAssembly) this.typeCache.GetCachedValue(typeName); if (typeNAssembly == null || typeNAssembly.assemblyName != assemblyName) { Assembly assembly = null; if (this.bSimpleAssembly) { try { ObjectReader.sfileIOPermission.Assert(); try { assembly = ObjectReader.ResolveSimpleAssemblyName(new AssemblyName(assemblyName)); } finally { CodeAccessPermission.RevertAssert(); } } catch (Exception ex) { } if (assembly == null) { return(null); } ObjectReader.GetSimplyNamedTypeFromAssembly(assembly, typeName, ref type); } else { try { ObjectReader.sfileIOPermission.Assert(); try { assembly = Assembly.Load(assemblyName); } finally { CodeAccessPermission.RevertAssert(); } } catch (Exception ex2) { } if (assembly == null) { return(null); } type = FormatterServices.GetTypeFromAssembly(assembly, typeName); } if (type == null) { return(null); } ObjectReader.CheckTypeForwardedTo(assembly, type.Assembly, type); typeNAssembly = new ObjectReader.TypeNAssembly(); typeNAssembly.type = type; typeNAssembly.assemblyName = assemblyName; this.typeCache.SetCachedValue(typeNAssembly); } return(typeNAssembly.type); }