Создать зависимость одного свойства от другого при валидации
Есть класс Student, в котором булево свойство IsExpelled, в зависимости от значения которого должно проверяться на наличие значения поле Semestr
Был написан кастомный атрибут валидации:
public class ValidationForExpelledAndAcademAttribute : ValidationAttribute
{
bool _checkbox;
public ValidationForExpelledAndAcademAttribute(bool checkbox)
{
_checkbox=checkbox;
}
public override bool IsValid(object value)
{
if (_checkbox == true)
{
if (value!=null)
return true;
return false;
}
if(_checkbox==false)
{
// if (value==null)
return true;
}
return false;
}
}
Но проблема в том, что нельзя в качестве параметра передать поле (т.к. требуется ссылка на объект)
[ValidationForExpelledAndAcadem(IsExpelled)]
public int Semestr { get; set; }
Можно ли как-то решить эту проблему? Или как лучше реализовать эту проверку?
Источник: Stack Overflow на русском