Type.GetType case insensitive - WinRT
c#, case-insensitive, objectinstantiation, types, windows-runtime
Solution
Do you know the assembly you're loading the types from? If so, you could just create a case-insensitive `Dictionary<string, Type>` (using `StringComparer.OrdinalIgnoreCase`) by calling `Assembly.GetTypes()` once. Then you don't need to use `Type.GetType()` at all - just consult the dictionary:
// 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
}
EDIT: Having seen that these are all in the same namespace, you can easily filter that :
var typeMap = someAssembly.GetTypes()
.Where(t => t.Namespace == "Foo.Bar")
.ToDictionary(t => t.Name, t => t,
StringComparer.OrdinalIgnoreCase);
Problem
From microsoft documentation, `Type.GetType` can be case-insensitive in .NET 4.5. Unfortunately, this is not available in WinRT (Metro/Modern UI/Store apps). Is there a known workaround ? Because I have to instantiate objects from a protocol which have all the string representations in uppercase. Example : from "MYOBJECT", I have to instantiate `MyObject`. I currently use `Activator.CreateInstance(Type.GetType("MYOBJECT"))`, but due to the case sensitivity, it does'nt work. Thanks