Changes to support network config

This commit is contained in:
Greenback
2020-10-10 14:05:19 +01:00
parent ebe650afa9
commit 6dc81ec8e8
5 changed files with 51 additions and 28 deletions

View File

@@ -134,6 +134,35 @@ namespace Emby.Server.Implementations.AppBase
}
}
/// <summary>
/// Manually pre-loads a factory so that it is available pre system initialisation.
/// </summary>
/// <typeparam name="T">Class to register.</typeparam>
public virtual void RegisterConfiguration<T>()
{
if (!typeof(IConfigurationFactory).IsAssignableFrom(typeof(T)))
{
throw new ArgumentException("Parameter does not implement IConfigurationFactory");
}
IConfigurationFactory factory = (IConfigurationFactory)Activator.CreateInstance(typeof(T));
if (_configurationFactories == null)
{
_configurationFactories = new IConfigurationFactory[] { factory };
}
else
{
var list = _configurationFactories.ToList<IConfigurationFactory>();
list.Add(factory);
_configurationFactories = list.ToArray();
}
_configurationStores = _configurationFactories
.SelectMany(i => i.GetConfigurations())
.ToArray();
}
/// <summary>
/// Adds parts.
/// </summary>
@@ -269,7 +298,7 @@ namespace Emby.Server.Implementations.AppBase
}
/// <inheritdoc />
public object GetConfiguration(string key, Type objectType = null)
public object GetConfiguration(string key)
{
return _configurations.GetOrAdd(key, k =>
{
@@ -278,12 +307,12 @@ namespace Emby.Server.Implementations.AppBase
var configurationInfo = _configurationStores
.FirstOrDefault(i => string.Equals(i.Key, key, StringComparison.OrdinalIgnoreCase));
if (configurationInfo == null && objectType == null)
if (configurationInfo == null)
{
throw new ResourceNotFoundException("Configuration with key " + key + " not found.");
}
var configurationType = configurationInfo?.ConfigurationType ?? objectType;
var configurationType = configurationInfo.ConfigurationType;
lock (_configurationSyncLock)
{