diff --git a/src/generator/AutoRest.CSharp/ClientModelExtensions.cs b/src/generator/AutoRest.CSharp/ClientModelExtensions.cs index c366e15a59..5426e6a665 100644 --- a/src/generator/AutoRest.CSharp/ClientModelExtensions.cs +++ b/src/generator/AutoRest.CSharp/ClientModelExtensions.cs @@ -343,7 +343,7 @@ public static string ValidateType(this IModelType type, IChild scope, string val if (constraints != null && constraints.Any()) { - AppendConstraintValidations(valueReference, constraints, sb, (type as PrimaryType)?.KnownFormat ?? KnownFormat.none); + AppendConstraintValidations(valueReference, constraints, sb, type); } if (sequence != null && sequence.ShouldValidateChain()) @@ -401,12 +401,12 @@ private static string ToLiteral(string input) } } - private static void AppendConstraintValidations(string valueReference, Dictionary constraints, IndentedStringBuilder sb, KnownFormat format) + private static void AppendConstraintValidations(string valueReference, Dictionary constraints, IndentedStringBuilder sb, IModelType type) { foreach (var constraint in constraints.Keys) { string constraintCheck; - string constraintValue = (format == KnownFormat.@char) ?$"'{constraints[constraint]}'" : constraints[constraint]; + string constraintValue = ((type as PrimaryType)?.KnownFormat == KnownFormat.@char) ?$"'{constraints[constraint]}'" : constraints[constraint]; switch (constraint) { case Constraint.ExclusiveMaximum: @@ -438,7 +438,14 @@ private static void AppendConstraintValidations(string valueReference, Dictionar break; case Constraint.Pattern: constraintValue = ToLiteral(constraintValue); - constraintCheck = $"!System.Text.RegularExpressions.Regex.IsMatch({valueReference}, {constraintValue})"; + if (type is DictionaryType) + { + constraintCheck = $"!System.Linq.Enumerable.All({valueReference}.Values, value => System.Text.RegularExpressions.Regex.IsMatch(value, {constraintValue}))"; + } + else + { + constraintCheck = $"!System.Text.RegularExpressions.Regex.IsMatch({valueReference}, {constraintValue})"; + } break; case Constraint.UniqueItems: if ("true".EqualsIgnoreCase(constraints[constraint]))