Атрибуты не хранятся в виде исполняемого кода, поэтому существуют значительные ограничения на тип данных, которые вы можете включить в них.
По сути, вы должны придерживаться базовых типов: строк, чисел, дат.Все, что может быть константой.
К счастью, вы можете использовать немного отражения и оператор nameof
:
public class model1
{
public DateTime param1 { get; set; }
[CustomAttribute (nameof(param1))]
public string param2 { get; set; }
}
public class CustomAttribute : ValidationAttribute
{
private readonly string _propertyName;
public CustomAttribute(string propertyName)
{
_propertyName = propertyName;
}
}
Имейте в виду, что проверкалогика должна находиться вне кода атрибута.
Необходимые ингредиенты для проверки будут Type.GetProperties , PropertyInfo.GetValue и MemberInfo.GetCustomAttribute .
Если вам нужен полный пример и помощь, чтобы лучше объяснить пример использования, сообщите мне.