internal static Type FindTypeInCurrentDomain(string typeName)
{
Type type = null;
//如果该类型已经装载
type = Type.GetType(typeName);
if (type != null)
{
return type;
}
//在EntryAssembly中查找
if (Assembly.GetEntryAssembly() != null)
{
type = Assembly.GetEntryAssembly().GetType(typeName);
if (type != null)
{
return type;
}
}
//在CurrentDomain的所有Assembly中查找
Assembly[] assemblyArray = AppDomain.CurrentDomain.GetAssemblies();
int assemblyArrayLength = assemblyArray.Length;
for (int i = 0; i < assemblyArrayLength; ++i)
{
type = assemblyArray[i].GetType(typeName);
if (type != null)
{
return type;
}
}
for (int i = 0; (i < assemblyArrayLength); ++i)
{
Type[] typeArray = assemblyArray[i].GetTypes();
int typeArrayLength = typeArray.Length;
for (int j = 0; j < typeArrayLength; ++j)
{
if (typeArray[j].Name.Equals(typeName))
{
return typeArray[j];
}
}
}
return type;
}