タイプをロードしているアセンブリを知っていますか? その場合は、一度呼び出すだけで、大文字と小文字を区別しない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);