internal Type GetType(BinaryAssemblyInfo assemblyInfo, string name)
{
Type type = null;
if (this.previousName != null && this.previousName.Length == name.Length && this.previousName.Equals(name) && this.previousAssemblyString != null && this.previousAssemblyString.Length == assemblyInfo.assemblyString.Length && this.previousAssemblyString.Equals(assemblyInfo.assemblyString))
{
type = this.previousType;
}
else
{
type = this.Bind(assemblyInfo.assemblyString, name);
if (type == null)
{
Assembly assembly = assemblyInfo.GetAssembly();
if (this.bSimpleAssembly)
{
ObjectReader.GetSimplyNamedTypeFromAssembly(assembly, name, ref type);
}
else
{
type = FormatterServices.GetTypeFromAssembly(assembly, name);
}
if (type != null)
{
ObjectReader.CheckTypeForwardedTo(assembly, type.Assembly, type);
}
}
this.previousAssemblyString = assemblyInfo.assemblyString;
this.previousName = name;
this.previousType = type;
}
return(type);
}