Существует ли способ удалить атрибуты из унаследованного свойства?

Действительно ли возможно удалить атрибуты из унаследованных свойств? Я думал, что при помощи нового ключевого слова мог сделать так...

 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; }
 }

... но это не работает вообще. Это удивляет меня, потому что новое должно конкретно там скрыть наследованных участников.

10
задан Sailing Judo 29 July 2010 в 21:30
поделиться

1 ответ

Ваш класс Employee теперь имеет 2 свойства FirstName, одно из них все еще [Required] ...

Прямой ответ: Нет, вы не можете удалять атрибуты, насколько я знаю. Это нарушило бы принцип замещения. Когда сотрудник является сотрудником, тогда применяются свойства Person.FirstName.

И: ключевое слово new здесь only служит для подавления предупреждения 'X скрывает член базового класса...'. Оно никак не влияет на семантику вашего кода.

8
ответ дан 4 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: