From c04e321ab385bf1580e4c8ffc9b83fa50a5457fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zavark=C3=B3=20G=C3=A1bor?= Date: Thu, 22 Mar 2018 16:10:31 +0100 Subject: [PATCH] Fix tabs --- Shuttle.Core.Reflection/IReflectionService.cs | 24 +- Shuttle.Core.Reflection/ReflectionService.cs | 283 +++++++++--------- 2 files changed, 154 insertions(+), 153 deletions(-) diff --git a/Shuttle.Core.Reflection/IReflectionService.cs b/Shuttle.Core.Reflection/IReflectionService.cs index f8b5f6c..d5ccd36 100644 --- a/Shuttle.Core.Reflection/IReflectionService.cs +++ b/Shuttle.Core.Reflection/IReflectionService.cs @@ -6,18 +6,18 @@ namespace Shuttle.Core.Reflection { public interface IReflectionService { - string AssemblyPath(Assembly assembly); - Assembly GetAssembly(string assemblyPath); - Assembly FindAssemblyNamed(string name); - IEnumerable GetAssemblies(string folder); - IEnumerable GetAssemblies(); + string AssemblyPath(Assembly assembly); + Assembly GetAssembly(string assemblyPath); + Assembly FindAssemblyNamed(string name); + IEnumerable GetAssemblies(string folder); + IEnumerable GetAssemblies(); IEnumerable GetMatchingAssemblies(string regex, string folder); - IEnumerable GetMatchingAssemblies(string regex); - IEnumerable GetRuntimeAssemblies(); - IEnumerable GetTypesAssignableTo(); - IEnumerable GetTypesAssignableTo(Type type); - IEnumerable GetTypes(Assembly assembly); - IEnumerable GetTypesAssignableTo(Assembly assembly); - IEnumerable GetTypesAssignableTo(Type type, Assembly assembly); + IEnumerable GetMatchingAssemblies(string regex); + IEnumerable GetRuntimeAssemblies(); + IEnumerable GetTypesAssignableTo(); + IEnumerable GetTypesAssignableTo(Type type); + IEnumerable GetTypes(Assembly assembly); + IEnumerable GetTypesAssignableTo(Assembly assembly); + IEnumerable GetTypesAssignableTo(Type type, Assembly assembly); } } diff --git a/Shuttle.Core.Reflection/ReflectionService.cs b/Shuttle.Core.Reflection/ReflectionService.cs index b0f74e8..4a63322 100644 --- a/Shuttle.Core.Reflection/ReflectionService.cs +++ b/Shuttle.Core.Reflection/ReflectionService.cs @@ -13,82 +13,83 @@ namespace Shuttle.Core.Reflection { - public class ReflectionService : IReflectionService - { + public class ReflectionService : IReflectionService + { private readonly List _assemblyExtensions = new List { ".dll", ".exe" }; - private readonly ILog _log; + private readonly ILog _log; - public ReflectionService() - { - _log = Log.For(this); - } + public ReflectionService() + { + _log = Log.For(this); + } - public string AssemblyPath(Assembly assembly) - { - Guard.AgainstNull(assembly, nameof(assembly)); + public string AssemblyPath(Assembly assembly) + { + Guard.AgainstNull(assembly, nameof(assembly)); - return !assembly.IsDynamic - ? new Uri(Uri.UnescapeDataString(new UriBuilder(assembly.CodeBase).Path)).LocalPath - : string.Empty; - } + return !assembly.IsDynamic + ? new Uri(Uri.UnescapeDataString(new UriBuilder(assembly.CodeBase).Path)).LocalPath + : string.Empty; + } - public Assembly GetAssembly(string assemblyPath) - { + public Assembly GetAssembly(string assemblyPath) + { var result = GetRuntimeAssemblies() .FirstOrDefault(assembly => AssemblyPath(assembly) .Equals(assemblyPath, StringComparison.InvariantCultureIgnoreCase)); - if (result != null) - { - return result; - } - - try - { - switch (Path.GetExtension(assemblyPath)) - { - case ".dll": - case ".exe": - { - result = Path.GetDirectoryName(assemblyPath) == AppDomain.CurrentDomain.BaseDirectory - ? Assembly.Load(Path.GetFileNameWithoutExtension(assemblyPath) ?? throw new InvalidOperationException(string.Format(Resources.GetFileNameWithoutExtensionException, assemblyPath))) - : Assembly.LoadFile(assemblyPath); - break; - } - - default: - { - result = Assembly.Load(assemblyPath); - - break; - } - } - } - catch (Exception ex) - { - _log.Warning(string.Format(Resources.AssemblyLoadException, assemblyPath, ex.Message)); - - if (ex is ReflectionTypeLoadException reflection) - { - foreach (var exception in reflection.LoaderExceptions) - { + if (result != null) + { + return result; + } + + try + { + switch (Path.GetExtension(assemblyPath)) + { + case ".dll": + case ".exe": + { + result = Path.GetDirectoryName(assemblyPath) == AppDomain.CurrentDomain.BaseDirectory + ? Assembly.Load(Path.GetFileNameWithoutExtension(assemblyPath) ?? + throw new InvalidOperationException(string.Format(Resources.GetFileNameWithoutExtensionException, assemblyPath))) + : Assembly.LoadFile(assemblyPath); + break; + } + + default: + { + result = Assembly.Load(assemblyPath); + + break; + } + } + } + catch (Exception ex) + { + _log.Warning(string.Format(Resources.AssemblyLoadException, assemblyPath, ex.Message)); + + if (ex is ReflectionTypeLoadException reflection) + { + foreach (var exception in reflection.LoaderExceptions) + { _log.Trace($"'{exception.Message}'."); - } - } - else - { + } + } + else + { _log.Trace($"{ex.GetType()}: '{ex.Message}'."); - } + } - return null; - } + return null; + } - return result; + return result; } public Assembly FindAssemblyNamed(string name) @@ -165,7 +166,7 @@ public IEnumerable GetAssemblies() public IEnumerable GetMatchingAssemblies(string regex, string folder) { return GetMatchingAssemblies(new Regex(regex, RegexOptions.IgnoreCase), folder); - } + } private IEnumerable GetMatchingAssemblies(Regex expression, string folder) { @@ -192,35 +193,35 @@ public IEnumerable GetMatchingAssemblies(string regex) { var assemblies = new List(GetRuntimeAssemblies()); - foreach ( - var assembly in + foreach ( + var assembly in GetMatchingAssemblies(regex, AppDomain.CurrentDomain.BaseDirectory) - .Where(assembly => assemblies.Find(candidate => candidate.Equals(assembly)) == null)) - { - assemblies.Add(assembly); - } - - var privateBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, - AppDomain.CurrentDomain.RelativeSearchPath ?? string.Empty); - - if (!privateBinPath.Equals(AppDomain.CurrentDomain.BaseDirectory)) - { - foreach ( - var assembly in + .Where(assembly => assemblies.Find(candidate => candidate.Equals(assembly)) == null)) + { + assemblies.Add(assembly); + } + + var privateBinPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, + AppDomain.CurrentDomain.RelativeSearchPath ?? string.Empty); + + if (!privateBinPath.Equals(AppDomain.CurrentDomain.BaseDirectory)) + { + foreach ( + var assembly in GetMatchingAssemblies(regex, privateBinPath) - .Where(assembly => assemblies.Find(candidate => candidate.Equals(assembly)) == null)) - { - assemblies.Add(assembly); - } - } + .Where(assembly => assemblies.Find(candidate => candidate.Equals(assembly)) == null)) + { + assemblies.Add(assembly); + } + } - return assemblies; - } + return assemblies; + } - public IEnumerable GetRuntimeAssemblies() - { + public IEnumerable GetRuntimeAssemblies() + { #if (!NETCOREAPP2_0 && !NETSTANDARD2_0) - return AppDomain.CurrentDomain.GetAssemblies(); + return AppDomain.CurrentDomain.GetAssemblies(); #else var result = new List(); @@ -234,66 +235,66 @@ public IEnumerable GetRuntimeAssemblies() } public IEnumerable GetTypesAssignableTo() - { - return GetTypesAssignableTo(typeof(T)); - } - - public IEnumerable GetTypesAssignableTo(Type type) - { - var result = new List(); - - foreach (var assembly in GetAssemblies()) - { - GetTypesAssignableTo(type, assembly) - .Where(candidate => result.Find(existing => existing == candidate) == null) - .ToList() - .ForEach(add => result.Add(add)); - } - - return result; - } - - public IEnumerable GetTypesAssignableTo(Assembly assembly) - { - return GetTypesAssignableTo(typeof(T), assembly); - } - - public IEnumerable GetTypesAssignableTo(Type type, Assembly assembly) - { - Guard.AgainstNull(type, nameof(type)); - Guard.AgainstNull(assembly, nameof(assembly)); - - return GetTypes(assembly).Where(candidate => candidate.IsAssignableTo(type) && !(candidate.IsInterface && candidate == type)).ToList(); - } - - public IEnumerable GetTypes(Assembly assembly) - { - Type[] types; - - try - { - _log.Trace(string.Format(Resources.TraceGetTypesFromAssembly, assembly)); - - types = assembly.GetTypes(); - } - catch (Exception ex) - { - if (ex is ReflectionTypeLoadException reflection) - { - foreach (var exception in reflection.LoaderExceptions) - { + { + return GetTypesAssignableTo(typeof(T)); + } + + public IEnumerable GetTypesAssignableTo(Type type) + { + var result = new List(); + + foreach (var assembly in GetAssemblies()) + { + GetTypesAssignableTo(type, assembly) + .Where(candidate => result.Find(existing => existing == candidate) == null) + .ToList() + .ForEach(add => result.Add(add)); + } + + return result; + } + + public IEnumerable GetTypesAssignableTo(Assembly assembly) + { + return GetTypesAssignableTo(typeof(T), assembly); + } + + public IEnumerable GetTypesAssignableTo(Type type, Assembly assembly) + { + Guard.AgainstNull(type, nameof(type)); + Guard.AgainstNull(assembly, nameof(assembly)); + + return GetTypes(assembly).Where(candidate => candidate.IsAssignableTo(type) && !(candidate.IsInterface && candidate == type)).ToList(); + } + + public IEnumerable GetTypes(Assembly assembly) + { + Type[] types; + + try + { + _log.Trace(string.Format(Resources.TraceGetTypesFromAssembly, assembly)); + + types = assembly.GetTypes(); + } + catch (Exception ex) + { + if (ex is ReflectionTypeLoadException reflection) + { + foreach (var exception in reflection.LoaderExceptions) + { _log.Error($"'{exception.Message}'."); - } - } - else - { + } + } + else + { _log.Error($"{ex.GetType()}: '{ex.Message}'."); - } + } - return new List(); - } + return new List(); + } - return types; - } - } + return types; + } + } }