Example #1
0
        public void ParseLabeledElementReferenceExpressionWorksAsExpected()
        {
            string json = @" { ""$LabeledElementReference"": ""self.CustomerFirstName"" }";

            CsdlExpressionBase expressionBase = ParseExpression(json);

            Assert.NotNull(expressionBase);
            CsdlLabeledExpressionReferenceExpression labeledRefExp = Assert.IsType <CsdlLabeledExpressionReferenceExpression>(expressionBase);

            Assert.Equal("self.CustomerFirstName", labeledRefExp.Label);
        }
Example #2
0
        /// <summary>
        /// Parse the Labeled Element Reference expression using <see cref="JsonElement"/>.
        /// </summary>
        /// <param name="element">The input JSON element.</param>
        /// <param name="context">The parser context.</param>
        /// <param name="labeledReferenceExp">The built Labeled Element Reference expression.</param>
        /// <returns>true/false</returns>
        private static bool TryParseLabeledElementReferenceExpression(JsonElement element, JsonParserContext context, out CsdlLabeledExpressionReferenceExpression labeledReferenceExp)
        {
            Debug.Assert(context != null);
            labeledReferenceExp = null;

            // Labeled element reference expressions are represented as an object with a member $LabeledElementReference whose value is a string containing an qualified name.
            JsonElement propertyValue;

            if (element.ValueKind != JsonValueKind.Object || !element.TryGetProperty("$LabeledElementReference", out propertyValue))
            {
                return(false);
            }

            string label = propertyValue.ProcessProperty("$LabeledElementReference", context, (e, c) => e.ParseAsString(c));

            labeledReferenceExp = new CsdlLabeledExpressionReferenceExpression(label, context.Location());
            return(true);
        }
 public CsdlSemanticsLabeledExpressionReferenceExpression(CsdlLabeledExpressionReferenceExpression expression, IEdmEntityType bindingContext, CsdlSemanticsSchema schema)
     : base(schema, expression)
 {
     this.expression     = expression;
     this.bindingContext = bindingContext;
 }