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;
     }
 }