public virtual IResolvedLocalizationOptions Resolve(LocalizationOptions localizationOptions)
        {
            if (localizationOptions == null)
            {
                throw new ArgumentNullException(nameof(localizationOptions));
            }

            this.EmbeddedResourceAssembliesValidator.Validate(localizationOptions.EmbeddedResourceAssemblies);

            IAssembly[] embeddedResourceAssemblies;

            try
            {
                embeddedResourceAssemblies = this.AssemblyHelper.Find(localizationOptions.EmbeddedResourceAssemblies).ToArray();
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"{Validation.EmbeddedResourceAssembliesValidator.ExceptionMessagePrefix}The patterns-collection contains invalid values. Values: {localizationOptions.EmbeddedResourceAssemblies.ToCommaSeparatedArgumentString()}", exception);
            }

            this.EmbeddedResourceAssembliesValidator.Validate(embeddedResourceAssemblies);

            var fileResourcesDirectory = this.ResolveFileResourcesDirectory(localizationOptions);

            return(new ResolvedLocalizationOptions(embeddedResourceAssemblies, fileResourcesDirectory, localizationOptions));
        }
        protected internal virtual IDirectoryInfo ResolveFileResourcesDirectory(LocalizationOptions localizationOptions)
        {
            IDirectoryInfo fileResourcesDirectory = null;

            var path = localizationOptions?.FileResourcesDirectoryPath?.Trim(this.FileSystem.Path.AltDirectorySeparatorChar, this.FileSystem.Path.DirectorySeparatorChar);

            // ReSharper disable InvertIf
            if (path != null)
            {
                if (!this.FileSystem.Path.IsPathRooted(path))
                {
                    path = this.FileSystem.Path.Combine(this.HostEnvironment.ContentRootPath, path);
                }

                fileResourcesDirectory = this.FileSystem.DirectoryInfo.FromDirectoryName(path);
            }
            // ReSharper restore InvertIf

            this.FileResourcesDirectoryValidator.Validate(fileResourcesDirectory);

            return(fileResourcesDirectory);
        }
コード例 #3
0
 public ResolvedLocalizationOptions(IEnumerable <IAssembly> embeddedResourceAssemblies, IDirectoryInfo fileResourcesDirectory, LocalizationOptions localizationOptions)
 {
     this.EmbeddedResourceAssemblies = embeddedResourceAssemblies ?? throw new ArgumentNullException(nameof(embeddedResourceAssemblies));
     this.FileResourcesDirectory     = fileResourcesDirectory;
     this.LocalizationOptions        = localizationOptions ?? throw new ArgumentNullException(nameof(localizationOptions));
 }