У меня есть пользовательский класс проверки
using System;
using System.Collections.Generic;
using System.Reflection;
internal class RequiredAttribute1 : Attribute
{
public RequiredAttribute1()
{
}
public void Validate(object o, MemberInfo info, List<string> errors)
{
object value;
switch (info.MemberType)
{
case MemberTypes.Field:
value = ((FieldInfo)info).GetValue(o);
break;
case MemberTypes.Property:
value = ((PropertyInfo)info).GetValue(o, null);
break;
default:
throw new NotImplementedException();
}
if (value is string && string.IsNullOrEmpty(value as string))
{
string error = string.Format("{0} is required", info.Name);
errors.Add(error);
}
}
}
Я использую его для следующего объекта: -
class Fruit
{
[RequiredAttribute1]
public string Name {get; set;}
[RequiredAttribute1]
public string Description {get; set;}
}
Теперь я хочу запустить правила проверки в спискефрукты, чтобы напечатать в строку
Все, что я могу придумать, это: -
- Итерация по фруктам
- Для каждого фрукта, итерация по его свойствам
- Для каждого свойства итерируйте пользовательские валидаторы (только 1 здесь ...)
- Вызовите функцию валидации
- Соберите и распечатайте ошибки валидатора
Есть ли что-то проще?чем эта и более встроенная, для чтения этих аннотаций, без необходимости добавления каркасных библиотек типа (ASP.net / MVC / etc ...)?
Это просто для простого консольного приложения.