private static IEnumerable <Facet> OverrideFacetValues <T>(IEnumerable <T> facetThings, Func <T, FacetDescription> getDescription, Func <T, Facet> getFacet, FacetValues values) { // yield all the non custom values foreach (var thing in facetThings) { FacetDescription description = getDescription(thing); Facet facet; if (!description.IsConstant && values.TryGetFacet(description, out facet)) { yield return(facet); } else { yield return(getFacet(thing)); } } }
internal TypeUsage ShallowCopy(FacetValues facetValues) { return(TypeUsage.Create(_edmType, OverrideFacetValues(Facets, facetValues))); }
/// <summary> /// Factory method for creating a TypeUsage with specified EdmType /// </summary> /// <param name="edmType">EdmType for which to create a type usage</param> /// <returns>new TypeUsage instance with default facet values</returns> internal static TypeUsage Create(EdmType edmType, FacetValues values) { return(new TypeUsage(edmType, GetDefaultFacetDescriptionsAndOverrideFacetValues(edmType, values))); }
private static IEnumerable <Facet> OverrideFacetValues(IEnumerable <Facet> facets, FacetValues values) { return(OverrideFacetValues(facets, f => f.Description, f => f, values)); }
private static IEnumerable <Facet> GetDefaultFacetDescriptionsAndOverrideFacetValues(EdmType type, FacetValues values) { return(OverrideFacetValues(type.GetAssociatedFacetDescriptions(), fd => fd, fd => fd.DefaultValueFacet, values)); }
private static TypeUsage CreateType(PrimitiveTypeKind type, FacetValues facets) { PrimitiveType primitiveType = EdmProviderManifest.Instance.GetPrimitiveType(type); TypeUsage typeUsage = TypeUsage.Create(primitiveType, facets); return typeUsage; }