// <summary> // Builds identity based on the functionName and parameters metadata. // Returns string in the form of "functionName (param1, param2, ... paramN)". // </summary> internal static void BuildIdentity <TParameterMetadata>( StringBuilder builder, string functionName, IEnumerable <TParameterMetadata> functionParameters, Func <TParameterMetadata, TypeUsage> getParameterTypeUsage, Func <TParameterMetadata, ParameterMode> getParameterMode) { // // Note: some callers depend on the format of the returned identity string. // // Start with the function name builder.Append(functionName); // Then add the string representing the list of parameters builder.Append('('); var first = true; foreach (var parameter in functionParameters) { if (first) { first = false; } else { builder.Append(","); } builder.Append(Helper.ToString(getParameterMode(parameter))); builder.Append(' '); getParameterTypeUsage(parameter).BuildIdentity(builder); } builder.Append(')'); }