public XmlPatternProvider2(string xml, Func <INotifyAction, string, NotifyRequest, IPattern> getpattern) { GetPatternMethod = getpattern; var xdoc = new XmlDocument(); xdoc.LoadXml(xml); var xformatter = xdoc.SelectSingleNode("/patterns/formatter") as XmlElement; if (xformatter != null) { var type = xformatter.GetAttribute("type"); if (!string.IsNullOrEmpty(type)) { formatter = (IPatternFormatter)Activator.CreateInstance(Type.GetType(type, true)); } } var references = new Dictionary <string, string>(); foreach (XmlElement xpattern in xdoc.SelectNodes("/patterns/pattern")) { var id = xpattern.GetAttribute("id"); var sender = xpattern.GetAttribute("sender"); var reference = xpattern.GetAttribute("reference"); if (string.IsNullOrEmpty(reference)) { var subject = GetResource(GetElementByTagName(xpattern, "subject")); var xbody = GetElementByTagName(xpattern, "body"); var body = GetResource(xbody); if (string.IsNullOrEmpty(body) && xbody != null && xbody.FirstChild is XmlText) { body = xbody.FirstChild.Value ?? string.Empty; } var styler = xbody != null?xbody.GetAttribute("styler") : string.Empty; patterns[id + sender] = new Pattern(id, subject, body, Pattern.HTMLContentType) { Styler = styler }; } else { references[id + sender] = reference + sender; } } foreach (var pair in references) { patterns[pair.Key] = patterns[pair.Value]; } }
public IPatternFormatter GetFormatter(IPattern pattern) { if (pattern == null) { throw new ArgumentNullException("pattern"); } IPatternFormatter formatter = null; formatters.TryGetValue(pattern.ID, out formatter); return(formatter); }
public XmlPatternProvider2(string xml, Func<INotifyAction, string, NotifyRequest, IPattern> getpattern) { GetPatternMethod = getpattern; var xdoc = new XmlDocument(); xdoc.LoadXml(xml); var xformatter = xdoc.SelectSingleNode("/patterns/formatter") as XmlElement; if (xformatter != null) { var type = xformatter.GetAttribute("type"); if (!string.IsNullOrEmpty(type)) { formatter = (IPatternFormatter)Activator.CreateInstance(Type.GetType(type, true)); } } var references = new Dictionary<string, string>(); foreach (XmlElement xpattern in xdoc.SelectNodes("/patterns/pattern")) { var id = xpattern.GetAttribute("id"); var sender = xpattern.GetAttribute("sender"); var reference = xpattern.GetAttribute("reference"); if (string.IsNullOrEmpty(reference)) { var subject = GetResource(GetElementByTagName(xpattern, "subject")); var xbody = GetElementByTagName(xpattern, "body"); var body = GetResource(xbody); if (string.IsNullOrEmpty(body) && xbody != null && xbody.FirstChild is XmlText) { body = xbody.FirstChild.Value ?? string.Empty; } var styler = xbody != null ? xbody.GetAttribute("styler") : string.Empty; patterns[id + sender] = new Pattern(id, subject, body, Pattern.HTMLContentType) { Styler = styler }; } else { references[id + sender] = reference + sender; } } foreach (var pair in references) { patterns[pair.Key] = patterns[pair.Value]; } }