internal Type FastBindToType(string assemblyName, string typeName)
{
Type type = null;
TypeNAssembly entry = (TypeNAssembly)_typeCache.GetCachedValue(typeName);
if (entry == null || entry.AssemblyName != assemblyName)
{
Assembly assm = null;
try
{
assm = Assembly.Load(new AssemblyName(assemblyName));
}
catch { }
if (assm == null)
{
return null;
}
if (_isSimpleAssembly)
{
GetSimplyNamedTypeFromAssembly(assm, typeName, ref type);
}
else
{
type = FormatterServices.GetTypeFromAssembly(assm, typeName);
}
if (type == null)
{
return null;
}
// before adding it to cache, let us do the security check
CheckTypeForwardedTo(assm, type.Assembly, type);
entry = new TypeNAssembly();
entry.Type = type;
entry.AssemblyName = assemblyName;
_typeCache.SetCachedValue(entry);
}
return entry.Type;
}