mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
Used ReflectionOnly and/or public types where possible to avoid loading related assemblies unnecessarily
Fixes #4763 Co-Authored-By: taloth <taloth@users.noreply.github.com>
This commit is contained in:
parent
71ad2ec794
commit
39a1dbf1d1
@ -30,14 +30,14 @@ protected ContainerBuilderBase(IStartupContext args, List<string> assemblies)
|
|||||||
#if !NETCOREAPP
|
#if !NETCOREAPP
|
||||||
foreach (var assembly in assemblies)
|
foreach (var assembly in assemblies)
|
||||||
{
|
{
|
||||||
_loadedTypes.AddRange(Assembly.Load(assembly).GetTypes());
|
_loadedTypes.AddRange(Assembly.Load(assembly).GetExportedTypes());
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
|
var startupPath = AppDomain.CurrentDomain.BaseDirectory;
|
||||||
|
|
||||||
foreach (var assemblyName in assemblies)
|
foreach (var assemblyName in assemblies)
|
||||||
{
|
{
|
||||||
_loadedTypes.AddRange(AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{assemblyName}.dll")).GetTypes());
|
_loadedTypes.AddRange(AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(startupPath, $"{assemblyName}.dll")).GetExportedTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
var toRegisterResolver = new List<string> { "System.Data.SQLite" };
|
var toRegisterResolver = new List<string> { "System.Data.SQLite" };
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
@ -17,7 +17,7 @@ public static List<PropertyInfo> GetSimpleProperties(this Type type)
|
|||||||
|
|
||||||
public static List<Type> ImplementationsOf<T>(this Assembly assembly)
|
public static List<Type> ImplementationsOf<T>(this Assembly assembly)
|
||||||
{
|
{
|
||||||
return assembly.GetTypes().Where(c => typeof(T).IsAssignableFrom(c)).ToList();
|
return assembly.GetExportedTypes().Where(c => typeof(T).IsAssignableFrom(c)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsSimpleType(this Type type)
|
public static bool IsSimpleType(this Type type)
|
||||||
@ -68,7 +68,7 @@ public static T[] GetAttributes<T>(this MemberInfo member)
|
|||||||
|
|
||||||
public static Type FindTypeByName(this Assembly assembly, string name)
|
public static Type FindTypeByName(this Assembly assembly, string name)
|
||||||
{
|
{
|
||||||
return assembly.GetTypes().SingleOrDefault(c => c.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
return assembly.GetExportedTypes().SingleOrDefault(c => c.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool HasAttribute<TAttribute>(this Type type)
|
public static bool HasAttribute<TAttribute>(this Type type)
|
||||||
|
@ -37,6 +37,7 @@ private static void InitializeEnvironment()
|
|||||||
Environment.SetEnvironmentVariable("No_Expand", "true");
|
Environment.SetEnvironmentVariable("No_Expand", "true");
|
||||||
Environment.SetEnvironmentVariable("No_SQLiteXmlConfigFile", "true");
|
Environment.SetEnvironmentVariable("No_SQLiteXmlConfigFile", "true");
|
||||||
Environment.SetEnvironmentVariable("No_PreLoadSQLite", "true");
|
Environment.SetEnvironmentVariable("No_PreLoadSQLite", "true");
|
||||||
|
Environment.SetEnvironmentVariable("No_SQLiteFunctions", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterDatabase(IContainer container)
|
public static void RegisterDatabase(IContainer container)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Core.Lifecycle;
|
using NzbDrone.Core.Lifecycle;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ public interface ICancelHandler
|
|||||||
void Attach();
|
void Attach();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class CancelHandler : ICancelHandler
|
public class CancelHandler : ICancelHandler
|
||||||
{
|
{
|
||||||
private readonly ILifecycleService _lifecycleService;
|
private readonly ILifecycleService _lifecycleService;
|
||||||
private object _syncRoot;
|
private object _syncRoot;
|
||||||
|
Loading…
Reference in New Issue
Block a user