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); }
/// <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; }