private IEnumerable <IValueFactoryInfo> Selector_LoadValueFactoryInfos(Assembly assembly) { IEnumerable <IValueFactoryInfo> result = Array.Empty <IValueFactoryInfo>(); if (assembly == null) { Logger.LogWarning(Messages.LOG_WRN_NULL_ENCOUNTERED, nameof(assembly)); return(result); } try { Logger.LogInformation(Messages.LOG_INF_READING_ASSEMBLY, assembly.FullName); Logger.LogInformation(Messages.LOG_INF_TYPES_EXPORTED, assembly.FullName, assembly.GetExportedTypes().Length); var items = assembly.GetExportedTypes().Select(Selector_LoadValueFactory).Where(_ => _ != null); result = new ValueFactoryCollection(items); } catch (Exception exception) { Logger.LogError(exception, Messages.LOG_ERR_FAILED_TO_READ_TYPES, assembly.FullName); throw; } return(result); }
public void Refresh() { try { var root = PathUtility.GetFullPath(Options.Path); var items = Directory.EnumerateFiles(root, SEARCHPATTERN_ASSEMBLIES) .Select(Selector_LoadAssembly) .SelectMany(Selector_LoadValueFactoryInfos); _ValueFactoryInfos = new ValueFactoryCollection(items); Thread.MemoryBarrier(); } catch (Exception exception) { Logger.LogError(exception, Messages.LOG_ERR_FAILED, nameof(Refresh)); throw; } }