internal static object MapToClr()

in src/Readers/Vipr.Reader.OData.v4/ODataVocabularyReader.cs [167:192]


        internal static object MapToClr(IEdmTypeReference valueType, IEdmExpression valueExpression)
        {
            // Evaluate the expression to get IEdmValues 
            var value = _edmEvaluator.Evaluate(valueExpression);

            object instance;

            // Check whether the type is an AmbiguousTypeBinding meaning that it contains compound restrictions.
            if (valueType.Definition.GetType().Name == "AmbiguousTypeBinding" && value is IEdmStructuredValue)
            {
                instance = FetchNewInstanceOfAmbiguousBinding(valueType.Definition);

                return GetInstanceWithProperties(instance, value);

            }
            else if (valueType.Definition.TypeKind == EdmTypeKind.Complex && value is IEdmStructuredValue)
            {
                instance = FetchNewInstanceOfAnnotationComplexType(valueType.Definition);

                return GetInstanceWithProperties(instance, value);
            }
            else
            {
                return MapToClr(value);
            }
        }