У меня есть, скажем, этот простой класс:
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 , чтобы проверка перемещалась за пределы сущностей. Таким образом, проверка может быть запущена как внутри сущностей, так и из моих обработчиков команд. Сама проверка также выглядит более читаемой благодаря плавным обозначениям.