internal Type GetType(String typeName){
if (this.assembly == null){
if (!loadFailed) {
try {
this.Load();
}catch{
loadFailed = true;
}
}
if (this.assembly == null)
return null;
}
Type result = this.assembly.GetType(typeName, false);
if (result != null && (!result.IsPublic || CustomAttribute.IsDefined(result, typeof(System.Runtime.CompilerServices.RequiredAttributeAttribute), true)))
result = null; //Suppress the type if it is not public or if it is a funky C++ type.
return result;
}