有没有办法从继承的属性中删除属性?

发布于 2024-09-12 05:37:51 字数 445 浏览 4 评论 0原文

是否可以从继承的属性中删除属性?我认为通过使用 new 关键字我可以这样做......

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

但这根本不起作用。这让我感到惊讶,因为 new 专门用于隐藏继承的成员。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

追风人 2024-09-19 05:37:51

您的 Employee 类现在有 2 个 FirstName 属性,其中一个仍然是 [Required] ...

直接回答:不,据我所知,您无法删除属性。这将违反替代原则。当 Employee IS-A Person 时,Person.FirstName 的属性适用。

并且:这里的new关键字用于抑制“X正在隐藏基类成员..”警告。它对代码的语义没有任何影响。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文