Вы можете получить и проверить все возможные типы сборки по приведенному ниже коду.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var b in a.GetTypes())
{
Console.WriteLine(b.FullName);
}
}
}
}
}
В распечатанном списке есть
System.Collections.Generic.List`1
, что для
List<T>
типов.Если вы хотите, чтобы ваша точная потребность была
List<int>
Вы должны написать
System.Collections.Generic.List`1[System.Int32]
Таким образом, ваш код будет работать так:
public static Type GetType(string typeName)
{
string clrType = null;
if (CLRConstants.TryGetValue(typeName, out clrType))
{
return Type.GetType(clrType);
}
var type = Type.GetType(typeName);
if (type != null) return type;
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
type = a.GetType(typeName);
if (type != null)
return type;
}
return null;
}
private static Dictionary<string, string> CLRConstants {
get{
var dct = new Dictionary<string, string>();
dct.Add("int", "System.Int32");
dct.Add("List<int>", "System.Collections.Generic.List`1[System.Int32]");
return dct;
}
}