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