views:

29

answers:

1

Is it possible to remove attributes from inherited properties? I thought that by using the new keyword I could do so...

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

... but this doesnt work at all. This surprises me because the new is specifically there to hide inherited members.

+1  A: 

Your Employee class now has 2 FirstName properties, one of them still is required...

Direct answer: No, you cannot remove attributes for as far as I know.

And: the new keyword here only serves to suppress the 'X is hiding base class member..' warning. It has no effect (whatsoever) on the semantics of your code.

Henk Holterman