Exemple #1
0
        internal static ArgumentException BodyShouldBeOfType(this LambdaExpression expression, string paramName,
                                                             params Type[] allowedTypes)
        {
            switch (allowedTypes.Length)
            {
            case 0:
                throw new ArgumentException("At least one type needs to be allowed.", nameof(allowedTypes));

            case 1:
                return(expression.BodyShouldBeOfType(paramName, allowedTypes[0]));

            default:
                var sb = new StringBuilder();
                foreach (var type in allowedTypes.Take(allowedTypes.Length - 2))
                {
                    sb.Append(type.Name).Append(", ");
                }

                sb.Append(allowedTypes[allowedTypes.Length - 2]).Append(" or ")
                .Append(allowedTypes[allowedTypes.Length - 1]);

                return(expression.BodyShouldBeOfTypeImpl(paramName, sb.ToString()));
            }
        }
Exemple #2
0
 internal static ArgumentException BodyShouldBeOfType(this LambdaExpression expression, string paramName,
                                                      Type allowedType)
 {
     return(expression.BodyShouldBeOfTypeImpl(paramName, allowedType.Name));
 }