コード例 #1
0
 /// <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;
 }
コード例 #2
0
 /// <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);
 }
コード例 #3
0
        /// <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;
        }
コード例 #4
0
        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
            });
        }
コード例 #5
0
        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));
            }
        }