/// <summary> /// Parse a template and replace placeholders with specified values. /// </summary> /// <param name="nodeName">Name of the node containing the template contents</param> /// <param name="template">Template to be parsed</param> /// <param name="templateParams">Object contaiing placeholder propreties to be replaced</param> /// <returns></returns> public IDictionary<string, string> ParseTemplate(string nodeName, INotificationTemplate template, object templateParams) { // Load template var templateNode = template.Read(); if (templateNode == null) { throw new XmlException( string.Format("Could not find template node {0} in template.", nodeName)); } var parsedNodes = new Dictionary<string, string>(); // Parse placeholders foreach (var node in templateNode.Descendants()) { // Loop through template properties and replace placeholders with values if (templateParams != null) { var properties = templateParams.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public); foreach (var prop in properties) { var value = (string)prop.GetValue(templateParams, null); string placeholder = "{{" + prop.Name + "}}"; parsedNodes.Add(node.Name.ToString(), node.Value.Replace(placeholder, value)); } } else { parsedNodes.Add(node.Name.ToString(), node.Value); } } return parsedNodes; }
/// <summary> /// Parse a template and replace placeholders with specified values. /// </summary> /// <param name="nodeName">Name of the node containing the template contents</param> /// <param name="template">Template to be parsed</param> /// <param name="templateParams">Object contaiing placeholder propreties to be replaced</param> /// <returns></returns> public IDictionary <string, string> ParseTemplate(string nodeName, INotificationTemplate template, object templateParams) { // Load template var templateNode = template.Read(); if (templateNode == null) { throw new XmlException( string.Format("Could not find template node {0} in template.", nodeName)); } var parsedNodes = new Dictionary <string, string>(); // Parse placeholders foreach (var node in templateNode.Descendants()) { // Loop through template properties and replace placeholders with values if (templateParams != null) { var properties = templateParams.GetType() .GetProperties(BindingFlags.Instance | BindingFlags.Public); foreach (var prop in properties) { var value = (string)prop.GetValue(templateParams, null); string placeholder = "{{" + prop.Name + "}}"; parsedNodes.Add(node.Name.ToString(), node.Value.Replace(placeholder, value)); } } else { parsedNodes.Add(node.Name.ToString(), node.Value); } } return(parsedNodes); }