示例#1
0
        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];
            }
        }
示例#2
0
        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];
            }
        }