public bool Build(TransformBuilderContext context, IReadOnlyDictionary <string, string> transformValues) { if (transformValues.TryGetValue(PathSetKey, out var pathSet)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); var path = MakePathString(pathSet); context.AddPathSet(path); } else if (transformValues.TryGetValue(PathPrefixKey, out var pathPrefix)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); var path = MakePathString(pathPrefix); context.AddPathPrefix(path); } else if (transformValues.TryGetValue(PathRemovePrefixKey, out var pathRemovePrefix)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); var path = MakePathString(pathRemovePrefix); context.AddPathRemovePrefix(path); } else if (transformValues.TryGetValue(PathPatternKey, out var pathPattern)) { TransformHelpers.CheckTooManyParameters(transformValues, expected: 1); var path = MakePathString(pathPattern); // We don't use the extension here because we want to avoid doing a DI lookup for the binder every time. context.RequestTransforms.Add(new PathRouteValuesTransform(path.Value, _binderFactory)); } else { return(false); } return(true); }