private static ODataCollectionValue ReadCollectionParameterValue(ODataCollectionReader collectionReader) { ODataCollectionValue value2; List<object> list = new List<object>(); while (collectionReader.Read()) { switch (collectionReader.State) { case ODataCollectionReaderState.CollectionStart: case ODataCollectionReaderState.CollectionEnd: { continue; } case ODataCollectionReaderState.Value: { list.Add(collectionReader.Item); continue; } case ODataCollectionReaderState.Completed: goto Label_004F; } throw new InvalidOperationException(System.Data.Services.Strings.DataServiceException_GeneralError); } Label_004F: value2 = new ODataCollectionValue(); value2.Items = list; return value2; }
private object Convert(ODataCollectionReader reader, IEdmCollectionTypeReference collectionType, ODataDeserializerContext readContext) { IEdmTypeReference elementType = collectionType.ElementType(); Type clrElementType = EdmLibHelpers.GetClrType(elementType, readContext.Model); IList list = Activator.CreateInstance(typeof(List<>).MakeGenericType(clrElementType)) as IList; while (reader.Read()) { switch (reader.State) { case ODataCollectionReaderState.Value: object element = Convert(reader.Item, elementType, readContext); list.Add(element); break; default: break; } } return list; }
internal static ODataCollectionValue ReadCollection(ODataCollectionReader reader) { ArrayList items = new ArrayList(); string typeName = null; while (reader.Read()) { if (ODataCollectionReaderState.Value == reader.State) { items.Add(reader.Item); } else if (ODataCollectionReaderState.CollectionStart == reader.State) { typeName = reader.Item.ToString(); } } return new ODataCollectionValue { Items = items, TypeName = typeName }; }
private ODataResponse ReadResponse(ODataCollectionReader odataReader) { var collection = new List<object>(); while (odataReader.Read()) { if (odataReader.State == ODataCollectionReaderState.Completed) break; switch (odataReader.State) { case ODataCollectionReaderState.CollectionStart: break; case ODataCollectionReaderState.Value: collection.Add(GetPropertyValue(odataReader.Item)); break; case ODataCollectionReaderState.CollectionEnd: break; } } return ODataResponse.FromCollection(collection); }