private static string PopulateTemplate(string template, SourceDefinition sourceDefinition, string valueGenericName, string[] genericParameters, ValidatorDefinition validatorOne, ValidatorDefinition validatorTwo, ExtensionDefinition extension, bool invertOne, bool invertTwo, bool joinSourceAndValue = false) => template .Replace("__InvertOne__", $"{(invertOne ? "Inverted" : "Standard")}") .Replace("__InvertTwo__", $"{(invertTwo ? "Inverted" : "Standard")}") .Replace("__Inverted__", $"{((extension?.Invert ?? false) ? "Inverted" : "Standard")}") .Replace("__DataContainerFactory__", sourceDefinition.GetDataContainerFactoryType()) .Replace("__StateValidator__", sourceDefinition.GetSourceName(valueGenericName)) .Replace("__TSourceType__", joinSourceAndValue ? valueGenericName : SourceGeneric) .Replace("__TValueType__", valueGenericName) .Replace("__TDataValueType__", sourceDefinition.GetDataValueType(valueGenericName)) .Replace("__TValidatorValueType__", sourceDefinition.GetValidatorValueType(valueGenericName, Option.None <ValidatorDefinition>())) .Replace("__ValueValidatorOne__", validatorOne?.GetName(sourceDefinition, valueGenericName) ?? String.Empty) .Replace("__ValueValidatorTwo__", validatorTwo?.GetName(sourceDefinition, valueGenericName) ?? String.Empty) .Replace("__NewValueValidator__", extension?.Validator.GetName(sourceDefinition, valueGenericName) ?? String.Empty) .Replace("__ExtensionName__", extension?.ExtensionName ?? String.Empty) .Replace("__GenericParameters__", HelperExtensions.ConstructorGenericParameters(genericParameters, Option.Create(!joinSourceAndValue, SourceGeneric))) .Replace("__ExtensionParameters__", extension?.GetParameters(sourceDefinition, valueGenericName) ?? String.Empty) .Replace("__Arguments__", extension?.GetArguments() ?? String.Empty) .Replace("__NotOpen__", $"{((extension?.Invert ?? false) ? @".Not(s => s" : String.Empty)}") .Replace("__NotClose__", $"{((extension?.Invert ?? false) ? ")" : String.Empty)}");
public static string GetName(this ValidatorDefinition validator, SourceDefinition sourceDefinition, string valueGenericName) => validator.GetValidatorName(sourceDefinition.GetValidatorValueType(valueGenericName, Option.Some(validator)));