diff --git a/src/Microsoft.OData.Client/Materialization/EntryValueMaterializationPolicy.cs b/src/Microsoft.OData.Client/Materialization/EntryValueMaterializationPolicy.cs index a2fa1dc0d1..1254f4fc9d 100644 --- a/src/Microsoft.OData.Client/Materialization/EntryValueMaterializationPolicy.cs +++ b/src/Microsoft.OData.Client/Materialization/EntryValueMaterializationPolicy.cs @@ -485,7 +485,7 @@ private object GetOrCreateCollectionProperty(object instance, ClientPropertyAnno else { // Try List<> first because that's what we did in V1/V2, but use the actual property type if it doesn't support List<> - Type listCollectionType = typeof(List<>).MakeGenericType(property.EntityCollectionItemType); + Type listCollectionType = typeof(List<>).MakeGenericType(property.CollectionGenericType); if (collectionType.IsAssignableFrom(listCollectionType)) { collectionType = listCollectionType; @@ -498,7 +498,7 @@ private object GetOrCreateCollectionProperty(object instance, ClientPropertyAnno { if (DSClient.PlatformHelper.IsInterface(collectionType)) { - collectionType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(property.EntityCollectionItemType); + collectionType = typeof(System.Collections.ObjectModel.Collection<>).MakeGenericType(property.CollectionGenericType); } result = this.CreateNewInstance(property.EdmProperty.Type, collectionType); @@ -767,7 +767,7 @@ private void MaterializeDynamicProperty(MaterializerEntry entry, ODataNestedReso containerProperty.Add(link.Name, collection); } } - else + else { MaterializerEntry linkEntry = linkState.Entry; Type itemType = ResolveClientTypeForDynamicProperty(linkEntry.Entry.TypeName, entry.ResolvedObject); diff --git a/src/Microsoft.OData.Client/Metadata/ClientPropertyAnnotation.cs b/src/Microsoft.OData.Client/Metadata/ClientPropertyAnnotation.cs index 72636669a9..e18448e2bf 100644 --- a/src/Microsoft.OData.Client/Metadata/ClientPropertyAnnotation.cs +++ b/src/Microsoft.OData.Client/Metadata/ClientPropertyAnnotation.cs @@ -261,6 +261,11 @@ internal bool IsResourceSet } } + internal Type CollectionGenericType + { + get { return this.collectionGenericType; } + } + /// Type of items in the primitive or complex collection. internal Type PrimitiveOrComplexCollectionItemType {