Я хочу преобразовать строку в тип C #.Вариант использования: я храню сериализованные данные в кеше вместе с типом, а затем возвращаю их обратно.У меня есть собственный класс с именем DataEntities.Show (где DataEntities это пространство имен).Если я сохраню тип этого класса «DataEntities.ShowEntity», а затем попытаюсь десериализовать его, все будет хорошо и здорово.
Проблемы начинаются, когда я сохраняю объект типа List в кеше.Его результирующим типом является «System.Collections.Generic.List`1 [DataEntities.ShowEntity]», поэтому поиск ниже не удается, так как сборка содержит только DataEntities.ShowEntity, а результирующий тип не найден.В результате я получаю нулевое значение.
Я могу придумать некрасивое решение, в котором я анализирую строковый тип для префикса «Список» или «Перечисление», но должен быть более элегантный способ сделать это.Любой совет?
private static Type GetGlobalType(string s)
{
Type t = null;
Assembly[] av = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly a in av)
{
Type[] types = a.GetTypes();
t = Type.GetType(s + "," + a.GetName());
if (t == null)
{
t = Type.GetType(s);
}
if (t != null)
break;
}
return t;
}