В связи с этим вопрос
Я создал свой собственный DateValidationAttibute, чтобы убедиться, что строка имеет допустимый формат даты (например, MM / DD / YYYY)
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class DateValidationAttribute : DataTypeAttribute
{
public DateValidationAttribute() : base(DataType.Date){}
//MM/DD/YYYY, MM-DD-YYYY
public override bool IsValid(object value)
{
//validation logic
}
}
Я пытаюсь проверить этот атрибут с помощью этого кода
[Test]
public void Test()
{
var invalidObject = new TestValidation {DateField = "bah"};
var validationContext = new ValidationContext(invalidObject, null, null);
var validationResults = new System.Collections.Generic.List<ValidationResult>();
bool result = Validator.TryValidateObject(invalidObject, validationContext, validationResults);
Assert.IsFalse(result);
Assert.AreEqual(1, validationResults.Count);
}
private class TestValidation
{
[DateValidation(ErrorMessage = "Invalid Date!")]
public string DateField { get; set; }
}
К сожалению, это не работает.Я установил точку останова в конструкторе DateValidationAttribute и в методе IsValid.Он определенно попадает в конструктор, но никогда не попадает в метод IsValid.Есть идеи?