public object ProvideValue(IServiceProvider serviceProvider) { // For throwing parsing error IXmlLineInfo lineInfo; if (serviceProvider.GetService(typeof(IXmlLineInfoProvider)) is IXmlLineInfoProvider lineInfoProvider) { lineInfo = lineInfoProvider.XmlLineInfo; } else { lineInfo = new XmlLineInfo(); } // Null Argument? if (string.IsNullOrWhiteSpace(Argument)) { throw new XamlParseException($"{GetType().Name} requires {nameof(Argument)} property to be set", lineInfo); } // Parse Argument object value = ParseValue(lineInfo); CheckValue(serviceProvider, lineInfo, value); return(value); }
public ImageSource ProvideValue(IServiceProvider serviceProvider) { if (String.IsNullOrEmpty(Source)) { IXmlLineInfoProvider lineInfoProvider = serviceProvider .GetService(typeof(XmlLineInfoProvider)) as IXmlLineInfoProvider; IXmlLineInfo lineInfo; if (lineInfoProvider != null) { lineInfo = lineInfoProvider.XmlLineInfo; } else { lineInfo = new XmlLineInfo(); } throw new XamlParseException("" + "La extensión requiere que la propiedad Source no sea vacía", lineInfo); } var assembly = GetType().GetTypeInfo().Assembly; string assemblyName = assembly.GetName().Name; var image = assemblyName + "." + Source; return(ImageSource.FromResource(image, assembly)); }
public void XmlLineInfoConstructor2() { tlog.Debug(tag, $"XmlLineInfoConstructor START"); XmlLineInfo xmlLineInfo2 = new XmlLineInfo(10, 5); tlog.Debug(tag, $"XmlLineInfoConstructor END (OK)"); Assert.Pass("XmlLineInfoConstructor"); }
public void XmlLineInfoConstructor1() { tlog.Debug(tag, $"XmlLineInfoConstructor1 START"); XmlLineInfo xmlLineInfo1 = new XmlLineInfo(); Assert.IsNotNull(xmlLineInfo1, "null XmlLineInfo"); Assert.IsInstanceOf <XmlLineInfo>(xmlLineInfo1, "Should return XmlLineInfo instance."); tlog.Debug(tag, $"XmlLineInfoConstructor1 END"); }
public void XmlLineInfoConstructor2() { tlog.Debug(tag, $"XmlLineInfoConstructor2 START"); var testingTarget = new XmlLineInfo(10, 5); Assert.IsNotNull(testingTarget, "null XmlLineInfo"); Assert.IsInstanceOf <XmlLineInfo>(testingTarget, "Should return XmlLineInfo instance."); tlog.Debug(tag, $"XmlLineInfoConstructor2 END"); }
/// <param name="serviceProvider">To be added.</param> /// <summary>For internal use by the XAML infrastructure.</summary> /// <returns>To be added.</returns> /// <remarks>To be added.</remarks> public object ProvideValue(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } if (this.Key == null) { IXmlLineInfoProvider lineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider; IXmlLineInfo arg_40_0; if (lineInfoProvider == null) { IXmlLineInfo xmlLineInfo2 = new XmlLineInfo(); arg_40_0 = xmlLineInfo2; } else { arg_40_0 = lineInfoProvider.XmlLineInfo; } IXmlLineInfo lineInfo = arg_40_0; throw new XamlParseException("you must specify a key in {StaticResource}", lineInfo); } IProvideParentValuesPublic expr_62 = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideParentValuesPublic; if (expr_62 == null) { throw new ArgumentException(); } IXmlLineInfoProvider xmlLineInfoProvider = serviceProvider.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider; IXmlLineInfo xmlLineInfo = (xmlLineInfoProvider != null) ? xmlLineInfoProvider.XmlLineInfo : null; using (IEnumerator <object> enumerator = expr_62.ParentObjects.GetEnumerator()) { while (enumerator.MoveNext()) { VisualElement ve = enumerator.Current as VisualElement; object res; if (ve != null && ve.Resources != null && ve.Resources.TryGetValue(this.Key, out res)) { object result = res; return(result); } } } if (Application.Current != null && Application.Current.Resources != null && Application.Current.Resources.ContainsKey(this.Key)) { return(Application.Current.Resources[this.Key]); } return(null); }
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); }
private ITag LoadTag(XNode xmlNode, IList <Include> includes) { ITag tag = null; var prepend = xmlNode?.GetAttribute("Prepend")?.Trim(); var property = xmlNode?.GetAttribute("Property")?.Trim(); var compareValue = xmlNode?.GetAttribute("CompareValue")?.Trim(); #region Init Tag switch (xmlNode.GetName()) { case "#text": case "#cdata-section": { var bodyText = " " + xmlNode.GetValue().Replace("\n", "").Trim(); return(new SqlText { LineInfo = XmlLineInfo.Create(xmlNode), BodyText = bodyText }); } case "If": { tag = new IfTag { Test = xmlNode.GetAttribute("Test") }; break; } case "Include": { var refId = xmlNode?.GetAttribute("RefId"); var include_tag = new Include { RefId = refId, Prepend = prepend }; includes.Add(include_tag); tag = include_tag; break; } case "IsEmpty": { tag = new IsEmpty { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsEqual": { tag = new IsEqual { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "Bind": { tag = new BindTag { Name = xmlNode.GetAttribute("Name"), Value = xmlNode.GetAttribute("Value"), }; break; } case "Trim": { tag = new TrimTag { Prefix = xmlNode.GetAttribute("Prefix"), PrefixOverrides = xmlNode.GetAttribute("PrefixOverrides"), Suffix = xmlNode.GetAttribute("Suffix"), ChildTags = new List <ITag>(), }; break; } case "IsGreaterEqual": { tag = new IsGreaterEqual { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "IsGreaterThan": { tag = new IsGreaterThan { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "IsLessEqual": { tag = new IsLessEqual { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "IsLessThan": { tag = new IsLessThan { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "IsNotEmpty": { tag = new IsNotEmpty { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsNotEqual": { tag = new IsNotEqual { Prepend = prepend, Property = property, CompareValue = compareValue, ChildTags = new List <ITag>() }; break; } case "IsNotNull": { tag = new IsNotNull { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsNull": { tag = new IsNull { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsTrue": { tag = new IsTrue { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsFalse": { tag = new IsFalse { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "IsProperty": { tag = new IsProperty { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "Placeholder": { tag = new Placeholder { Prepend = prepend, Property = property, ChildTags = new List <ITag>() }; break; } case "Switch": { tag = new Switch { Property = property, Prepend = prepend, ChildTags = new List <ITag>() }; break; } case "Case": { var switchNode = xmlNode.Parent; var switchProperty = xmlNode?.GetAttribute("Property")?.Trim(); var switchPrepend = xmlNode?.GetAttribute("Prepend")?.Trim(); tag = new Switch.Case { CompareValue = compareValue, Property = switchProperty, Prepend = switchPrepend, Test = xmlNode?.GetAttribute("Test")?.Trim(), ChildTags = new List <ITag>() }; break; } case "Default": { var switchNode = xmlNode.Parent; var switchProperty = xmlNode?.GetAttribute("Property")?.Trim(); var switchPrepend = xmlNode?.GetAttribute("Prepend")?.Trim(); tag = new Switch.Defalut { Property = switchProperty, Prepend = switchPrepend, ChildTags = new List <ITag>() }; break; } case "Dynamic": { tag = new Dynamic { Prepend = prepend, ChildTags = new List <ITag>() }; break; } case "Where": { tag = new Where { ChildTags = new List <ITag>() }; break; } case "Set": { tag = new Set { ChildTags = new List <ITag>() }; break; } case "For": { var open = xmlNode?.GetAttribute("Open")?.Trim(); var separator = xmlNode?.GetAttribute("Separator")?.Trim(); var close = xmlNode?.GetAttribute("Close")?.Trim(); var key = xmlNode?.GetAttribute("Key")?.Trim(); var index = xmlNode?.GetAttribute("Index")?.Trim(); tag = new For { Prepend = prepend, Property = property, Open = open, Close = close, Index = index, Separator = separator, Key = key, ChildTags = new List <ITag>() }; break; } case "Env": { var dbProvider = xmlNode?.GetAttribute("DbProvider")?.Trim(); tag = new Env { Prepend = prepend, DbProvider = dbProvider, ChildTags = new List <ITag>() }; break; } case "#comment": { break; } default: { throw new SmartSqlException($"Statement.LoadTag unkonw tagName:{xmlNode.GetName()}."); }; } #endregion if (tag != null) { tag.LineInfo = XmlLineInfo.Create(xmlNode); } if (xmlNode is XElement ell) { foreach (XNode childNode in ell.Nodes()) { ITag childTag = LoadTag(childNode, includes); if (childTag != null && tag != null) { childTag.Parent = tag; (tag as Tag).ChildTags.Add(childTag); } } } return(tag); }
public void Destroy() { x1 = null; tlog.Info(tag, "Destroy() is called!"); }
public void Init() { tlog.Info(tag, "Init() is called!"); x1 = new XmlLineInfo(); }