隐藏派生属性不起作用? C#

时间:2011-09-14 14:09:05

标签: c# inheritance properties

我有一个自定义控件,称之为ctrlFoo,源自System.Web.UI.Control

当实例化这个自定义控件时,我可以看到所有System.Web.UI.Control的公共属性,它们在intellisense中很烦人,因为它们有很多。

ctrlFoo里面我试过

private new string SkinID { get; set; }

但我仍然可以在ctrlFoo的初始化实例中看到此属性。

有人可以提供任何其他建议吗?

3 个答案:

答案 0 :(得分:2)

你错过了从Control继承的观点。如果ctrlFoo确实 Control,那么您不应该隐藏Control拥有的属性。 Control有一个SkinID,因此ctrlFoo也应该有SkinID

如果您不喜欢Intellisense中显示的内容,请更改您的Intellisense设置(之前我从未听过有人抱怨过IntelliSense。)

答案 1 :(得分:0)

您仍然可以看到它,因为您看到System.Web.UI.Control.SkinID,这是公开的。

您可以通过为privateget访问者设置访问修饰符set来隐藏该属性,但是基本属性必须是虚拟的或抽象的才能被覆盖。

答案 2 :(得分:0)

您无法隐藏继承的属性。这将违反Liskov替代原则。