using RazorLight; namespace Marechai.Email; /// /// implementation backed by RazorLight, with templates loaded as /// embedded resources from this assembly. Caches a single for the lifetime of /// the process. /// public sealed class RazorLightEmailTemplateRenderer : IEmailTemplateRenderer { readonly RazorLightEngine _engine; public RazorLightEmailTemplateRenderer() => _engine = new RazorLightEngineBuilder() .UseEmbeddedResourcesProject(typeof(RazorLightEmailTemplateRenderer).Assembly, "Marechai.Email.Templates") .UseMemoryCachingProvider() .Build(); public Task RenderAsync(string templateKey, TModel model) => _engine.CompileRenderAsync(templateKey, model); }