Если вы настаиваете на использовании проверки атрибута, то вам придется создать свой собственный атрибут и, вероятно, попытаться получить доступ к значению a
с помощью отражения. Слишком сложно, если вы спросите меня ...
Проверьте это о том, как создавать свои собственные атрибуты проверки.
Я бы скорее предложил вам использовать интерфейс IValidatableObject
.
public class Student : IValidatableObject
{
public bool a{get;set;}
public string b{get;set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(a & string.IsNullOrEmpty(b))
yield return new ValidationResult("b is required", new[] {"b"});
}
}
Метод Validate
будет запущен после проверки и прикрепит сообщение ValidationResult
к свойству, включенному в список (b
в вашем случае).
Попробуйте это решение.