public RazorTemplateCompiler( RazorSourceGenerator sourceGenerator, RoslynCompilationService roslynCompilationService, RazorLightProject razorLightProject, RazorLightOptions razorLightOptions) { _razorSourceGenerator = sourceGenerator ?? throw new ArgumentNullException(nameof(sourceGenerator)); _compiler = roslynCompilationService ?? throw new ArgumentNullException(nameof(roslynCompilationService)); _razorProject = razorLightProject ?? throw new ArgumentNullException(nameof(razorLightProject)); _razorLightOptions = razorLightOptions ?? throw new ArgumentNullException(nameof(razorLightOptions)); // This is our L0 cache, and is a durable store. Views migrate into the cache as they are requested // from either the set of known precompiled views, or by being compiled. var cacheOptions = Options.Create(new MemoryCacheOptions()); _cache = new MemoryCache(cacheOptions); _normalizedKeysCache = new ConcurrentDictionary <string, string>(StringComparer.Ordinal); // We need to validate that the all of the precompiled views are unique by path (case-insensitive). // We do this because there's no good way to canonicalize paths on windows, and it will create // problems when deploying to linux. Rather than deal with these issues, we just don't support // views that differ only by case. _precompiledViews = new Dictionary <string, CompiledTemplateDescriptor>( 5, //Change capacity when precompiled views are arrived StringComparer.OrdinalIgnoreCase); }
public TemplateFactoryProvider( RazorSourceGenerator generator, RoslynCompilationService compiler, RazorLightOptions razorOptions) { sourceGenerator = generator ?? throw new ArgumentNullException(nameof(generator)); templateCompiler = compiler ?? throw new ArgumentNullException(nameof(compiler)); options = razorOptions ?? throw new ArgumentNullException(nameof(razorOptions)); }