public LocalizationSettings(IFileResourcesDirectoryValidator fileResourcesDirectoryValidator, ILoggerFactory loggerFactory, IOptionsMonitor <LocalizationOptions> optionsMonitor, ILocalizationOptionsResolver optionsResolver)
        {
            this.FileResourcesDirectoryValidator = fileResourcesDirectoryValidator ?? throw new ArgumentNullException(nameof(fileResourcesDirectoryValidator));
            this.Logger = (loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory))).CreateLogger(this.GetType());

            if (optionsMonitor == null)
            {
                throw new ArgumentNullException(nameof(optionsMonitor));
            }

            var options = optionsMonitor.CurrentValue ?? throw new ArgumentException("The current value of the options-monitor can not be null.", nameof(optionsMonitor));

            this.OptionsResolver = optionsResolver ?? throw new ArgumentNullException(nameof(optionsResolver));

            var resolvedOptions = optionsResolver.Resolve(options);

            this._alphabeticalSorting = resolvedOptions.AlphabeticalSorting;
            this._configuredEmbeddedResourceAssemblies = resolvedOptions.EmbeddedResourceAssemblies;
            this._fileResourcesDirectory = resolvedOptions.FileResourcesDirectory;
            this._includeParentCultures  = resolvedOptions.IncludeParentCultures;
            this._throwErrors            = resolvedOptions.ThrowErrors;

            var observableCollection = new ObservableSetCollection <IAssembly>
            {
                resolvedOptions.EmbeddedResourceAssemblies
            };

            observableCollection.CollectionChanged += this.OnEmbeddedResourceAssembliesCollectionChanged;

            this.EmbeddedResourceAssemblies = observableCollection;

            this.OptionsChangeListener = optionsMonitor.OnChange(this.OnOptionsChanged);
        }
 public LocalizationOptionsResolver(IAssemblyHelper assemblyHelper, IEmbeddedResourceAssembliesValidator embeddedResourceAssembliesValidator, IFileResourcesDirectoryValidator fileResourcesDirectoryValidator, IFileSystem fileSystem, IHostEnvironment hostEnvironment)
 {
     this.AssemblyHelper = assemblyHelper ?? throw new ArgumentNullException(nameof(assemblyHelper));
     this.EmbeddedResourceAssembliesValidator = embeddedResourceAssembliesValidator ?? throw new ArgumentNullException(nameof(embeddedResourceAssembliesValidator));
     this.FileResourcesDirectoryValidator     = fileResourcesDirectoryValidator ?? throw new ArgumentNullException(nameof(fileResourcesDirectoryValidator));
     this.FileSystem      = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
     this.HostEnvironment = hostEnvironment ?? throw new ArgumentNullException(nameof(hostEnvironment));
 }