/// <summary>
        /// Creates an instance of a <see cref="TemplateService"/>.
        /// </summary>
        /// <param name="configuration">The named configuration.</param>
        /// <returns>A new instance of <see cref="TemplateService"/>.</returns>
        public static TemplateService CreateTemplateService(string configuration)
        {
            if (string.IsNullOrEmpty(configuration))
            {
                throw new ArgumentException("The argument 'configuration' cannot be null or empty.");
            }

            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config == null)
            {
                throw new ConfigurationErrorsException("The configuration section <razorEngine /> is not defined.");
            }

            var templateServiceConfig = config.TemplateServices
                                        .Cast <TemplateServiceConfigurationElement>()
                                        .Where(t => t.Name.Equals(configuration, StringComparison.InvariantCultureIgnoreCase))
                                        .SingleOrDefault();

            if (templateServiceConfig == null)
            {
                throw new ConfigurationErrorsException(string.Format("No configuration for template service '{0}' is defined", configuration));
            }

            return(CreateTemplateService(templateServiceConfig, config.Namespaces.Cast <NamespaceConfigurationElement>().Select(n => n.Namespace)));
        }
예제 #2
0
        /// <summary>
        /// Configures the engine.
        /// </summary>
        private static void Configure()
        {
            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config == null)
            {
                return;
            }

            defaultNamespaces = config.Namespaces
                                .Cast <NamespaceConfigurationElement>()
                                .Select(n => n.Namespace);

            config.TemplateServices
            .Cast <TemplateServiceConfigurationElement>()
            .ToList()
            .ForEach(t => Services.Add(t.Name, TemplateServiceFactory.CreateTemplateService(t, defaultNamespaces)));

            if (!string.IsNullOrEmpty(config.TemplateServices.Default))
            {
                TemplateService templateService = null;
                if (!Services.TryGetValue(config.TemplateServices.Default, out templateService))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(
                                  "No template service is configured with name '{0}' and could not be set as default.",
                                  config.TemplateServices.Default));
                }

                service        = templateService;
                createdService = true;
            }
        }
        public static ICompilerService GetDefaultCompilerService()
        {
            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config == null)
            {
                return(GetCompilerService(Language.CSharp));
            }

            return(GetCompilerService(config.DefaultLanguage));
        }
예제 #4
0
        /// <summary>
        /// Configures the templating engine.
        /// </summary>
        private static void Configure()
        {
            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config != null)
            {
                if (!string.IsNullOrWhiteSpace(config.Factory))
                {
                    SetCompilerServiceFactory(config.Factory);
                }
                else
                {
                    CompilerServiceFactory = new DefaultCompilerServiceFactory();
                }

                if (config.TemplateServices.Count > 0)
                {
                    string @default = string.IsNullOrWhiteSpace(config.TemplateServices.Default)
                                          ? null
                                          : config.TemplateServices.Default;

                    foreach (TemplateServiceConfigurationElement serviceConfig in config.TemplateServices)
                    {
                        string name    = serviceConfig.Name;
                        var    service = ConfigurationServices.CreateTemplateService(serviceConfig);;
                        ConfigurationServices.AddNamespaces(service, config.Namespaces);

                        if (name == @default)
                        {
                            DefaultTemplateService = service;
                        }

                        Services.Add(name, service);
                    }
                }

                if (DefaultTemplateService == null)
                {
                    DefaultTemplateService = new TemplateService(CompilerServiceFactory.CreateCompilerService());
                    ConfigurationServices.AddNamespaces(DefaultTemplateService, config.Namespaces);
                }

                if (!string.IsNullOrWhiteSpace(config.Activator))
                {
                    DefaultTemplateService.SetActivator(ConfigurationServices.CreateInstance <IActivator>(config.Activator));
                }
            }
            else
            {
                ConfigureDefault();
            }
        }
예제 #5
0
        public static ICompilerService GetDefaultCompilerService()
        {
#if NO_CONFIGURATION
            return(GetCompilerService(Language.CSharp));
#else
            var config = RazorEngineConfigurationSection.GetConfiguration();
            if (config == null)
            {
                return(GetCompilerService(Language.CSharp));
            }
            return(GetCompilerService(config.DefaultLanguage));
#endif
        }
예제 #6
0
        /// <summary>
        /// Initialises the configuration.
        /// </summary>
        /// <param name="name">The name of the template service configuration.</param>
        private void InitialiseConfiguration(string name)
        {
            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config == null)
            {
                return;
            }

            var serviceConfig = (name == null) ? null : config.TemplateServices
                                .OfType <TemplateServiceConfigurationElement>()
                                .Where(t => t.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
                                .SingleOrDefault();

            InitialiseConfiguration(config, serviceConfig);
        }
        /// <summary>
        ///     Initialises the configuration.
        /// </summary>
        /// <param name="name">The name of the template service configuration.</param>
        private void InitialiseConfiguration(string name)
        {
            var config = RazorEngineConfigurationSection.GetConfiguration();

            if (config == null)
            {
                throw new ConfigurationErrorsException("No <razorEngine> configuration section has been defined.");
            }

            var serviceConfig = config.TemplateServices
                                .OfType <TemplateServiceConfigurationElement>()
                                .Where(t => t.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
                                .SingleOrDefault();

            if (serviceConfig == null)
            {
                throw new ConfigurationErrorsException("No <templateService> configuration element defined with name = '" + name + "'");
            }

            InitialiseConfiguration(config, serviceConfig);
        }
        public RazorViewServiceConfiguration(Registration <IRazorViewLoader> razorViewLoaderRegistration)
        {
            if (razorViewLoaderRegistration == null)
            {
                throw new ArgumentNullException(nameof(razorViewLoaderRegistration));
            }

            RazorViewLoader        = razorViewLoaderRegistration;
            CompilerServiceFactory = new DefaultCompilerServiceFactory();
            EncodedStringFactory   = new HtmlEncodedStringFactory();
            CachingProvider        = new DefaultCachingProvider();
            Namespaces             = new HashSet <string>()
            {
                "System",
                "System.Collections.Generic",
                "System.Linq"
            };
            RazorEngineConfigurationSection configuration = RazorEngineConfigurationSection.GetConfiguration();

            Language = configuration?.DefaultLanguage ?? Language.CSharp;
        }
예제 #9
0
 /// <summary>
 /// Initialises the <see cref="TemplateServiceFactory"/> type.
 /// </summary>
 static TemplateServiceFactory()
 {
     Configuration = RazorEngineConfigurationSection.GetConfiguration();
 }