diff options
Diffstat (limited to 'Emby.Server.Implementations/Data/TypeMapper.cs')
| -rw-r--r-- | Emby.Server.Implementations/Data/TypeMapper.cs | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/Emby.Server.Implementations/Data/TypeMapper.cs b/Emby.Server.Implementations/Data/TypeMapper.cs index 37c952e88..064664e1f 100644 --- a/Emby.Server.Implementations/Data/TypeMapper.cs +++ b/Emby.Server.Implementations/Data/TypeMapper.cs @@ -1,54 +1,36 @@ using System; using System.Collections.Concurrent; using System.Linq; -using MediaBrowser.Model.Reflection; namespace Emby.Server.Implementations.Data { /// <summary> - /// Class TypeMapper + /// Class TypeMapper. /// </summary> public class TypeMapper { - private readonly IAssemblyInfo _assemblyInfo; - /// <summary> - /// This holds all the types in the running assemblies so that we can de-serialize properly when we don't have strong types + /// This holds all the types in the running assemblies + /// so that we can de-serialize properly when we don't have strong types. /// </summary> - private readonly ConcurrentDictionary<string, Type> _typeMap = new ConcurrentDictionary<string, Type>(); - - public TypeMapper(IAssemblyInfo assemblyInfo) - { - _assemblyInfo = assemblyInfo; - } + private readonly ConcurrentDictionary<string, Type?> _typeMap = new ConcurrentDictionary<string, Type?>(); /// <summary> /// Gets the type. /// </summary> /// <param name="typeName">Name of the type.</param> /// <returns>Type.</returns> - /// <exception cref="ArgumentNullException"></exception> - public Type GetType(string typeName) + /// <exception cref="ArgumentNullException"><c>typeName</c> is null.</exception> + public Type? GetType(string typeName) { if (string.IsNullOrEmpty(typeName)) { throw new ArgumentNullException(nameof(typeName)); } - return _typeMap.GetOrAdd(typeName, LookupType); - } - - /// <summary> - /// Lookups the type. - /// </summary> - /// <param name="typeName">Name of the type.</param> - /// <returns>Type.</returns> - private Type LookupType(string typeName) - { - return _assemblyInfo - .GetCurrentAssemblies() - .Select(a => a.GetType(typeName)) - .FirstOrDefault(t => t != null); + return _typeMap.GetOrAdd(typeName, k => AppDomain.CurrentDomain.GetAssemblies() + .Select(a => a.GetType(k)) + .FirstOrDefault(t => t != null)); } } } |
