Validate Data annotation attribute from C#
manually.
Create validation method :
public static IEnumerable<string> Validate(params object[] objects)
{
foreach (var item in
objects)
{
PropertyInfo[] properties =
item.GetType().GetProperties();
foreach (var propertyInfo in
properties)
{
object[] customAttributes = propertyInfo.GetCustomAttributes(
typeof(ValidationAttribute),
inherit: true);
foreach (var customAttribute in
customAttributes)
{
var validationAttribute = (ValidationAttribute)customAttribute;
bool isValid =
validationAttribute.IsValid(propertyInfo.GetValue(item,
BindingFlags.GetProperty,
null,
null,
null));
if (!isValid)
{
yield return validationAttribute.ErrorMessage;
}
}
}
}
}
Add DTO class :
public class TestClass1
{
[Required(ErrorMessage = "This field is required")]
[EmailAddress(ErrorMessage = "Please enter valid email
address")]
public string Email { get; set; }
[Range(0, 10, ErrorMessage = "Value between 0 to 10")]
public int Num1 { get; set; }
public TestClass2 TestClass2 { get; set; }
}
public class TestClass2
{
[Required(ErrorMessage = "FirstName is required")]
public string FirstName { get; set; }
}
Now use validation method in real code :
TestClass1 tc = new TestClass1();
tc.Email = "AP@"; // Please enter valid email address
tc.Num1 = 50; // Value between 0 to 10
tc.TestClass2 = new TestClass2(); // FirstName is required
var messages = Validate(tc, tc.TestClass2);
StringBuilder sb = new StringBuilder();
foreach (var item in
messages)
{
sb.AppendLine(item);
}