move TypeMapper to portable project

This commit is contained in:
Luke Pulverenti
2016-11-19 11:51:49 -05:00
parent 52227ce00d
commit bdab0a1588
7 changed files with 31 additions and 10 deletions

View File

@@ -550,7 +550,7 @@ namespace Emby.Server.Core
DisplayPreferencesRepository = displayPreferencesRepo;
RegisterSingleInstance(DisplayPreferencesRepository);
var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, GetDbConnector(), MemoryStreamFactory);
var itemRepo = new SqliteItemRepository(ServerConfigurationManager, JsonSerializer, LogManager, GetDbConnector(), MemoryStreamFactory, assemblyInfo);
ItemRepository = itemRepo;
RegisterSingleInstance(ItemRepository);

View File

@@ -28,6 +28,8 @@ using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.Devices;
using MediaBrowser.Server.Implementations.Playlists;
using Emby.Server.Implementations.Data;
using MediaBrowser.Model.Reflection;
namespace Emby.Server.Core.Data
{
@@ -38,7 +40,7 @@ namespace Emby.Server.Core.Data
{
private IDbConnection _connection;
private readonly TypeMapper _typeMapper = new TypeMapper();
private readonly TypeMapper _typeMapper;
/// <summary>
/// Gets the name of the repository
@@ -95,7 +97,7 @@ namespace Emby.Server.Core.Data
/// <summary>
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
/// </summary>
public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogManager logManager, IDbConnector connector, IMemoryStreamFactory memoryStreamProvider)
public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogManager logManager, IDbConnector connector, IMemoryStreamFactory memoryStreamProvider, IAssemblyInfo assemblyInfo)
: base(logManager, connector)
{
if (config == null)
@@ -110,6 +112,7 @@ namespace Emby.Server.Core.Data
_config = config;
_jsonSerializer = jsonSerializer;
_memoryStreamProvider = memoryStreamProvider;
_typeMapper = new TypeMapper(assemblyInfo);
_criticReviewsPath = Path.Combine(_config.ApplicationPaths.DataPath, "critic-reviews");
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");

View File

@@ -1,47 +0,0 @@
using System;
using System.Collections.Concurrent;
using System.Linq;
namespace Emby.Server.Core.Data
{
/// <summary>
/// Class TypeMapper
/// </summary>
public class TypeMapper
{
/// <summary>
/// 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>();
/// <summary>
/// Gets the type.
/// </summary>
/// <param name="typeName">Name of the type.</param>
/// <returns>Type.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public Type GetType(string typeName)
{
if (string.IsNullOrEmpty(typeName))
{
throw new ArgumentNullException();
}
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 AppDomain
.CurrentDomain
.GetAssemblies()
.Select(a => a.GetType(typeName, false))
.FirstOrDefault(t => t != null);
}
}
}