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.
Your Employee class now has 2 FirstName properties, one of them is still [Required] ...
Direct answer: No, you cannot remove attributes for as far as I know. That would violate the substitution principle. When an Employee IS-A Person then the properties of Person.FirstName apply.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With