/// <summary> /// Initializes a new instance of the <see cref="FeaturedODataFeedSerializer"/> class. /// </summary> /// <param name="serializerProvider">The underlying <see cref="ODataSerializerProvider">serializer provider</see>.</param> /// <param name="serializationFeatures">The <see cref="IList{T}">list</see> of <see cref="IODataSerializationFeature">serialization features</see> associated with the serializer.</param> public FeaturedODataFeedSerializer(ODataSerializerProvider serializerProvider, IList <IODataSerializationFeature> serializationFeatures) : base(serializerProvider) { Arg.NotNull(serializationFeatures, nameof(serializationFeatures)); ComplexTypeSerializer = new ODataComplexTypeSerializer(serializerProvider); SerializationFeatures = serializationFeatures; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultODataSerializerProvider"/> class. /// </summary> public DefaultODataSerializerProvider() { _feedSerializer = new ODataFeedSerializer(this); _deltaFeedSerializer = new ODataDeltaFeedSerializer(this); _collectionSerializer = new ODataCollectionSerializer(this); _complexTypeSerializer = new ODataComplexTypeSerializer(this); _entityTypeSerializer = new ODataEntityTypeSerializer(this); }
/// <summary> /// Initializes a new instance of the <see cref="ODataSerializationFeatureContext"/> class. /// </summary> /// <param name="element">The <see cref="IEdmElement">element</see> represented by the instance.</param> /// <param name="serializerContext">The associated <see cref="ODataSerializerContext">serializer context</see>.</param> /// <param name="complexTypeSerializer">The serializer that can be used to serialize OData complex types.</param> public ODataSerializationFeatureContext(IEdmElement element, ODataSerializerContext serializerContext, ODataComplexTypeSerializer complexTypeSerializer) { Arg.NotNull(element, nameof(element)); Arg.NotNull(serializerContext, nameof(serializerContext)); Arg.NotNull(complexTypeSerializer, nameof(complexTypeSerializer)); EdmElement = element; SerializerContext = serializerContext; ComplexTypeSerializer = complexTypeSerializer; }
private static ODataValue GetComplexValue(InstanceAnnotation entryAnnotation, object annotation, IEdmModel model, ODataComplexTypeSerializer complexSerializer, ODataSerializerContext serializerContext) { Contract.Requires(entryAnnotation != null); Contract.Requires(annotation != null); Contract.Requires(model != null); Contract.Requires(complexSerializer != null); Contract.Requires(serializerContext != null); var complexType = (IEdmComplexType)model.FindDeclaredType(entryAnnotation.AnnotationTypeName); if (complexType == null) { return(null); } var typeRef = new EdmComplexTypeReference(complexType, entryAnnotation.IsNullable); if (!entryAnnotation.IsCollection) { return(complexSerializer.CreateODataComplexValue(annotation, typeRef, serializerContext)); } var typeName = Invariant($"Collection({typeRef.FullName()})"); var items = GetComplexValues(annotation, complexSerializer, typeRef, serializerContext); return(new ODataCollectionValue() { Items = items, TypeName = typeName }); }
private static IEnumerable <ODataComplexValue> GetComplexValues(object value, ODataComplexTypeSerializer complexSerializer, IEdmComplexTypeReference complexType, ODataSerializerContext serializerContext) { Contract.Requires(complexSerializer != null); Contract.Requires(complexType != null); Contract.Requires(serializerContext != null); var items = value as System.Collections.IEnumerable; if (items == null) { yield break; } foreach (var graph in items) { yield return(complexSerializer.CreateODataComplexValue(graph, complexType, serializerContext)); } }