using System; using System.Collections.Concurrent; using System.Linq; namespace Emby.Server.Implementations.Data { /// /// Class TypeMapper. /// public class TypeMapper { /// /// This holds all the types in the running assemblies /// so that we can de-serialize properly when we don't have strong types. /// private readonly ConcurrentDictionary _typeMap = new ConcurrentDictionary(); /// /// Gets the type. /// /// Name of the type. /// Type. /// typeName is null. public Type? GetType(string typeName) { ArgumentException.ThrowIfNullOrEmpty(typeName); return _typeMap.GetOrAdd(typeName, k => AppDomain.CurrentDomain.GetAssemblies() .Select(a => a.GetType(k)) .FirstOrDefault(t => t is not null)); } } }