Exemplo n.º 1
0
    public ISortEnumValue?ParseSortLiteral(IValueNode valueSyntax)
    {
        if (valueSyntax is null)
        {
            throw new ArgumentNullException(nameof(valueSyntax));
        }

        if (valueSyntax is EnumValueNode evn &&
            ValueLookup.TryGetValue(evn.Value, out IEnumValue? ev) &&
            ev is ISortEnumValue sortEnumValue)
        {
            return(sortEnumValue);
        }

        if (valueSyntax is StringValueNode svn &&
            NameLookup.TryGetValue(svn.Value, out ev) &&
            ev is ISortEnumValue sortEnumValueOfString)
        {
            return(sortEnumValueOfString);
        }

        if (valueSyntax is NullValueNode)
        {
            return(null);
        }

        throw new SerializationException(
                  string.Format(
                      CultureInfo.InvariantCulture,
                      DataResources.SortingEnumType_Cannot_ParseLiteral,
                      Name,
                      valueSyntax.GetType().Name),
                  this);
    }