/// <summary> /// Checks the length of the string to verify whether or not it falls within the permissible limits. /// </summary> /// <param name="variable">The variable in context.</param> /// <param name="getVariableName">The name of the variable that should be populated in the error context.</param> /// <param name="minimumLength">The minimum length of the variable.</param> /// <param name="maximumLength">The maximum length of the variable.</param> /// <param name="actionContext">Current action context.</param> /// <param name="modelState">Current model object.</param> /// <returns>The status of the operation.</returns> public static bool StringLength(string variable, Expression <Func <string, string> > getVariableName, int minimumLength, int maximumLength, HttpActionContext actionContext, ModelStateDictionary modelState) { var variableName = ((MemberExpression)getVariableName.Body).Member.Name; var attr = new StringLengthAttribute(maximumLength) { MinimumLength = minimumLength }; if (!attr.IsValid(variable)) { modelState.AddModelError(attr.ToString(), attr.FormatErrorMessage(variableName)); AddErrorToResponse(actionContext, modelState); return(false); } return(true); }
static void Main(string[] args) { Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); Console.WriteLine("Your model assembly name:"); var assemblyName = Console.ReadLine(); var asm = Assembly.Load(assemblyName); var classes = asm.GetTypes().Where(p => p.IsClass).ToList(); foreach (var item in classes) { // Just grabbing this to get hold of the type name: var type = item.GetType(); // Get the PropertyInfo object: var properties = item.GetProperties(); if (HasEFDataAnnotaion(properties)) { Console.WriteLine(""); Console.WriteLine("Found Data Annotations attributes at {0} ...", item.FullName); foreach (var property in properties) { var attributes = property.GetCustomAttributes(false); // Using reflection. Attribute[] attrs = System.Attribute.GetCustomAttributes(property); // Displaying output. foreach (Attribute attr in attrs) { if (attr is KeyAttribute) { KeyAttribute a = (KeyAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is ForeignKeyAttribute) { ForeignKeyAttribute a = (ForeignKeyAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is IndexAttribute) { IndexAttribute a = (IndexAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.GetType().FullName + a.ToString(), property.Name); } if (attr is RequiredAttribute) { RequiredAttribute a = (RequiredAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is TimestampAttribute) { TimestampAttribute a = (TimestampAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is ConcurrencyCheckAttribute) { ConcurrencyCheckAttribute a = (ConcurrencyCheckAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is MinLengthAttribute) { MinLengthAttribute a = (MinLengthAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is MaxLengthAttribute) { MaxLengthAttribute a = (MaxLengthAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is StringLengthAttribute) { StringLengthAttribute a = (StringLengthAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is TableAttribute) { TableAttribute a = (TableAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is ColumnAttribute) { ColumnAttribute a = (ColumnAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is DatabaseGeneratedAttribute) { DatabaseGeneratedAttribute a = (DatabaseGeneratedAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } if (attr is ComplexTypeAttribute) { ComplexTypeAttribute a = (ComplexTypeAttribute)attr; Console.WriteLine("attribute {0} on {1} ", a.ToString(), property.Name); } } } } } }