Exemplo n.º 1
0
        public EngineHandler(
            RazorLightOptions options,
            IRazorTemplateCompiler compiler,
            ITemplateFactoryProvider factoryProvider,
            ICachingProvider cache)
        {
            Options         = options ?? throw new ArgumentNullException(nameof(options));
            Compiler        = compiler ?? throw new ArgumentNullException(nameof(compiler));
            FactoryProvider = factoryProvider ?? throw new ArgumentNullException(nameof(factoryProvider));

            Cache = cache;
        }
        public virtual RazorLightEngine Build()
        {
            var options = new RazorLightOptions();

            if (namespaces != null)
            {
                options.Namespaces = namespaces;
            }

            if (dynamicTemplates != null)
            {
                options.DynamicTemplates = dynamicTemplates;
            }

            if (metadataReferences != null)
            {
                options.AdditionalMetadataReferences = metadataReferences;
            }

            if (excludedAssemblies != null)
            {
                options.ExcludedAssemblies = excludedAssemblies;
            }

            if (prerenderCallbacks != null)
            {
                options.PreRenderCallbacks = prerenderCallbacks;
            }

            if (cachingProvider != null)
            {
                options.CachingProvider = cachingProvider;
            }


            var metadataReferenceManager = new DefaultMetadataReferenceManager(options.AdditionalMetadataReferences, options.ExcludedAssemblies);
            var assembly = operatingAssembly ?? Assembly.GetEntryAssembly();
            var compiler = new RoslynCompilationService(metadataReferenceManager, assembly);

            var sourceGenerator         = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, options.Namespaces);
            var templateCompiler        = new RazorTemplateCompiler(sourceGenerator, compiler, project, options);
            var templateFactoryProvider = new TemplateFactoryProvider();

            var engineHandler = new EngineHandler(options, templateCompiler, templateFactoryProvider, cachingProvider);

            return(new RazorLightEngine(engineHandler));
        }
 /// <summary>
 ///Creates RazorLightEngine with a custom RazorLightProject
 /// </summary>
 /// <param name="project">The project</param>
 /// <returns>Instance of RazorLightEngine</returns>
 public virtual RazorLightEngine Create(RazorLightProject project, RazorLightOptions options = null)
 {
     return(null);
 }
 public RazorLightEngine Create(RazorLightOptions options = null)
 {
     return(Create(null, options));
 }
        /// <summary>
        /// Creates RazorLightEngine with a embedded resource razor project
        /// </summary>
        /// <param name="rootType">Type of the root.</param>
        /// <param name="options">Engine options</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine ForEmbeddedResources(Type rootType, RazorLightOptions options)
        {
            var project = new EmbeddedRazorProject(rootType);

            return(Create(project, options));
        }
        /// <summary>
        /// Creates RazorLightEngine with a filesystem razor project
        /// </summary>
        /// <param name="root">Root folder where views are stored</param>
        /// <param name="options">Engine options</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine ForFileSystem(string root, RazorLightOptions options)
        {
            var project = new FileSystemRazorProject(root);

            return(Create(project, options));
        }