Вопрос:
Существует ли обходной путь, позволяющий использовать обобщенные элементы в конструкторе класса, который наследуется от класса, для которого не определены обобщенные типы?
Объяснение:
Я создаю новый пользовательский атрибут, унаследованный от класса ValidationAttribute.Я хочу использовать универсальные типы в конструкторе, как показано ниже:
DateValidationAttribute : ValidationAttribute {
public void DateValidationAttribute <TData>(Expression<Func<TData, DateTime?>> property){ ... }
}
Однако это, по-видимому, недопустимо, поскольку универсальные типы TData и TProperty не распознаются как универсальные.Кроме того, я не могу определить обобщенные элементы в определении класса, поскольку они наследуются от класса ValidationAttribute.Ошибка, которую я получаю, состоит в том, что TData и TProperty не определены.
Цель:
Цель передачи и выражения вниз, чтобы иметь строго типизированный способПередача имен атрибутов.Я пишу этот атрибут, чтобы сравнить два свойства класса.Реализация ниже, как это выглядит.Ниже я хочу, чтобы реализация выглядела следующим образом:
Current:
public DateTime? ToDate { get; set; }
[DateValidation("ToDate")]
public DateTime? FromDate { get; set; }
Goal:
public DateTime? ToDate { get; set; }
[DateValidation(prop => prop.ToDate)]
public DateTime? FromDate { get; set; }