У меня есть, скажем, такой простой класс:
public class User
{
[Required(AllowEmptyStrings = false, ErrorMessage="EmailIsRequired"]
public string EmailAddress { get; set; }
}
Я знаю, как использовать Validator.TryValidateProperty и Validator.TryValidateObject в пространстве имен System.ComponentModel.DataAnnotations. Чтобы это работало, вам необходим фактический экземпляр объекта, который вы хотите проверить.
Но теперь я хочу проверить определенное значение без экземпляра класса User, например:
TryValidateValue(typeof(User), "EmailAddress", "test@test.com");
Цель состоит в том, чтобы я хотел проверить значение перед тем, как на самом деле создавать экземпляр самого объекта (причина в том, что я разрешаю создавать только действительные сущности домена). Поэтому на самом деле я хочу использовать атрибуты проверки классов, а не экземпляров.
Есть идеи, как это можно сделать?
Спасибо!
РЕДАКТИРОВАТЬ: тем временем я решил не использовать аннотации данных, а вместо этого использовать http://fluentvalidation.codeplex.com, чтобы валидация перемещалась за пределы сущностей. Этот способ проверки может быть запущен из сущностей, а также из моих командных обработчиков. Сама проверка также выглядит более читабельной благодаря беглой записи.