private object Parse(string match, ref string remaining, IServiceProvider serviceProvider) { IXamlTypeResolver typeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver; if (match == "Binding") { this.markupExtension = new BindingExtension(); } else if (match == "TemplateBinding") { this.markupExtension = new TemplateBindingExtension(); } else if (match == "StaticResource") { this.markupExtension = new StaticResourceExtension(); } else if (match == "DynamicResource") { this.markupExtension = new DynamicResourceExtension(); } else { if (typeResolver == null) { return(null); } Type type; if (!typeResolver.TryResolve(match + "Extension", out type) && !typeResolver.TryResolve(match, out type)) { IXmlLineInfoProvider lineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider; IXmlLineInfo arg_BF_0; if (lineInfoProvider == null) { IXmlLineInfo xmlLineInfo = new XmlLineInfo(); arg_BF_0 = xmlLineInfo; } else { arg_BF_0 = lineInfoProvider.XmlLineInfo; } IXmlLineInfo lineInfo = arg_BF_0; throw new XamlParseException(string.Format("MarkupExtension not found for {0}", new object[] { match }), lineInfo); } this.markupExtension = (Activator.CreateInstance(type) as IMarkupExtension); } if (this.markupExtension == null) { IXmlLineInfoProvider lineInfoProvider2 = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider; IXmlLineInfo arg_123_0; if (lineInfoProvider2 == null) { IXmlLineInfo xmlLineInfo = new XmlLineInfo(); arg_123_0 = xmlLineInfo; } else { arg_123_0 = lineInfoProvider2.XmlLineInfo; } IXmlLineInfo lineInfo2 = arg_123_0; throw new XamlParseException(string.Format("Missing public default constructor for MarkupExtension {0}", new object[] { match }), lineInfo2); } if (remaining == "}") { return(this.markupExtension); } char next; string piece; while ((piece = GetNextPiece(ref remaining, out next)) != null) { HandleProperty(piece, serviceProvider, ref remaining, next != '='); } return(this.markupExtension); }