using Application.Business.Repository; using Application.Business.UnitOfWork; using log4net; using Antlr4.StringTemplate; using System.Globalization; using System.Reflection; using System.IO; namespace Application.Business.Service { public class ResourceTemplates { public const string InvoiceUploaded = "Application.Business.Templates.Email.InvoiceUploaded.html"; public const string PasswordRequest = "Application.Business.Templates.Email.PasswordRequest.html"; } public class TemplateService : BaseService { private static TemplateService instance; public static TemplateService Instance { get { if (instance == null) { instance = new TemplateService(); } return instance; } } public TemplateService() : base(new RepositoryFactory(), new UnitOfWorkFactory(), LogManager.GetLogger(typeof(UserService))) { } public string GetEmbeddedResourceAsString(string resourceName) { var assembly = Assembly.GetExecutingAssembly(); // assembly.GetManifestResourceNames(); // Get all the resources using (Stream stream = assembly.GetManifestResourceStream(resourceName)) { if (stream != null) { using (StreamReader reader = new StreamReader(stream)) { string result = reader.ReadToEnd(); return result; } } return string.Empty; } } public string ProcessResourceTemplate(string resourceName, string[,] parameters) { string template = GetEmbeddedResourceAsString(resourceName); return ProcessTemplate(template, parameters); } public string ProcessTemplate(string stringTemplate, string[,] parameters) { TemplateGroup templateGroup = new TemplateGroup('{', '}'); Template template = new Template(templateGroup, stringTemplate); for (int i = 0; i < parameters.GetLength(0);i += 1) { template.Add(parameters[i, 0], parameters[i, 1]); } return template.Render(new CultureInfo("nl-NL"), 200); } } }
53500cookie-checkC# Antlr String Template + Embedded Resources