您知道要从中加载类型的程序集吗?如果是这样,您可以通过调用一次来创建不区分大小写的Dictionary<string, Type>
(使用)。然后你根本不需要使用- 只需查阅字典:StringComparer.OrdinalIgnoreCase
Assembly.GetTypes()
Type.GetType()
// You'd probably do this once and cache it, of course...
var typeMap = someAssembly.GetTypes()
.ToDictionary(t => t.FullName, t => t,
StringComparer.OrdinalIgnoreCase);
...
Type type;
if (typeMap.TryGetValue(name, out type))
{
...
}
else
{
// Type not found
}
编辑:看到这些都在同一个命名空间中,您可以轻松过滤:
var typeMap = someAssembly.GetTypes()
.Where(t => t.Namespace == "Foo.Bar")
.ToDictionary(t => t.Name, t => t,
StringComparer.OrdinalIgnoreCase);