#c# #.net #inheritance #custom-attributes
#c# #.net #наследование #пользовательские атрибуты
Вопрос:
Базовый класс:
public class XmlNameValueField : XmlBaseField
{
[XmlAttribute("n")]
[Required]
public string Name { get; set; }
[XmlText]
public string Value { get; set; }
}
Дочерний класс:
public class DateField : XmlNameValueField
{
}
В имени поля дочернего класса должен быть дополнительный атрибут
[DataType (DataType.EmailAddress)]
Ответ №1:
Вам нужно будет пометить свойство как виртуальное в базовом классе, переопределить его в дочернем классе и добавить атрибуты.
Комментарии:
1. если у базового класса есть определение, не будет ли дочерний класс переопределять это определение?
2. @sksallaj, атрибуты можно наследовать (используя атрибут AttributeUsageAttribute для самого атрибута)
3. а как насчет реализации метода? Что, если парень хотел сохранить реализацию в базовом классе и не переопределять ее в дочернем классе? Но добавить атрибут только для дочернего класса?
4. @sksallaj извините, я не понимаю, что вы имеете в виду, какой метод вы имеете в виду?
5. Если он виртуальный, вы можете переопределить его и вызвать base.Add(x, y), но добавление атрибута в дочернюю реализацию, вероятно, изменит семантику класса, нарушив принцип подстановки Лискова