/// <summary> /// Translate a KeySegment /// </summary> /// <param name="segment">the segment to Translate</param> /// <returns>Defined by the implementer.</returns> public override string Translate(KeySegment segment) { Debug.Assert(segment != null, "segment != null"); List <KeyValuePair <string, object> > keys = segment.Keys.ToList(); StringBuilder builder = new StringBuilder(); KeySerializer.AppendKeyExpression(builder, new Collection <KeyValuePair <string, object> >(keys), p => p.Key, p => p.Value); return(builder.ToString()); }
/// <summary> /// Creates an instance of <see cref="SerializedEntityKey"/> for the given properties and values. /// </summary> /// <param name="keySerializer">The key serializer to use.</param> /// <param name="absoluteServiceUri">The absolute service URI.</param> /// <param name="entitySetName">Name of the entity set.</param> /// <param name="keyProperties">The key properties.</param> /// <param name="getPropertyValue">The callback to get each property's value.</param> /// <param name="editLinkSuffix">The suffix to append to the edit-link, or null.</param> /// <returns>A serialized-key instance.</returns> internal static SerializedEntityKey Create( KeySerializer keySerializer, Uri absoluteServiceUri, string entitySetName, ICollection <ResourceProperty> keyProperties, Func <ResourceProperty, object> getPropertyValue, string editLinkSuffix) { SimpleLazy <string> lazyRelativeIdentity = new SimpleLazy <string>(() => { var builder = new StringBuilder(); builder.Append(entitySetName); keySerializer.AppendKeyExpression(builder, keyProperties, p => p.Name, getPropertyValue); return(builder.ToString()); }); return(new LazySerializedEntityKey(lazyRelativeIdentity, absoluteServiceUri, editLinkSuffix)); }
/// <summary> /// Creates an instance of <see cref="SerializedEntityKey"/> for the given properties and values. /// </summary> /// <param name="keySerializer">The key serializer to use.</param> /// <param name="absoluteServiceUri">The absolute service URI.</param> /// <param name="entitySetName">Name of the entity set.</param> /// <param name="keyProperties">The key properties.</param> /// <param name="getPropertyValue">The callback to get each property's value.</param> /// <param name="editLinkSuffix">The suffix to append to the edit-link, or null.</param> /// <returns>A serialized-key instance.</returns> internal static SerializedEntityKey Create( KeySerializer keySerializer, Uri absoluteServiceUri, string entitySetName, ICollection<ResourceProperty> keyProperties, Func<ResourceProperty, object> getPropertyValue, string editLinkSuffix) { SimpleLazy<string> lazyRelativeIdentity = new SimpleLazy<string>(() => { var builder = new StringBuilder(); builder.Append(entitySetName); keySerializer.AppendKeyExpression(builder, keyProperties, p => p.Name, getPropertyValue); return builder.ToString(); }); return new LazySerializedEntityKey(lazyRelativeIdentity, absoluteServiceUri, editLinkSuffix); }