/// <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;
        }
Example #2
0
        /// <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);
        }