Действительно ли возможно удалить атрибуты из унаследованных свойств? Я думал, что при помощи нового ключевого слова мог сделать так...
public class Person
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
public class Employee : Person
{
[Required]
public string JobTitle { get; set; }
public new string FirstName { get; set; }
}
... но это не работает вообще. Это удивляет меня, потому что новое должно конкретно там скрыть наследованных участников.
Ваш класс Employee теперь имеет 2 свойства FirstName, одно из них все еще [Required] ...
Прямой ответ: Нет, вы не можете удалять атрибуты, насколько я знаю. Это нарушило бы принцип замещения. Когда сотрудник является сотрудником, тогда применяются свойства Person.FirstName.
И: ключевое слово new
здесь only служит для подавления предупреждения 'X скрывает член базового класса...'. Оно никак не влияет на семантику вашего кода.