/// <summary> /// Gets child expandable ODCM objects for an ODCM class. /// </summary> /// <param name="class">The ODCM class</param> /// <param name="model">The ODCM model</param> /// <returns>The child ODCM objects for the given ODCM class.</returns> private static IEnumerable <OdcmProperty> GetChildObjects(this OdcmType type, OdcmModel model) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (model == null) { throw new ArgumentNullException(nameof(model)); } // Get the property's type and subtypes, and expand them to get their properties IEnumerable <OdcmProperty> properties = type.EvaluateProperties().Where(prop => prop.IsODataRouteSegment(prop.Class == model.EntityContainer)); IEnumerable <OdcmProperty> derivedTypeProperties = type.EvaluatePropertiesOnDerivedTypes().Where(prop => prop.IsODataRouteSegment(prop.Class == model.EntityContainer)); return(properties.Concat(derivedTypeProperties)); }