我有一个自定义控件,称之为ctrlFoo
,源自System.Web.UI.Control
。
当实例化这个自定义控件时,我可以看到所有System.Web.UI.Control
的公共属性,它们在intellisense中很烦人,因为它们有很多。
在ctrlFoo
里面我试过
private new string SkinID { get; set; }
但我仍然可以在ctrlFoo
的初始化实例中看到此属性。
有人可以提供任何其他建议吗?
答案 0 :(得分:2)
你错过了从Control
继承的观点。如果ctrlFoo
确实是 Control
,那么您不应该隐藏Control
拥有的属性。 Control
有一个SkinID
,因此ctrlFoo
也应该有SkinID
。
如果您不喜欢Intellisense中显示的内容,请更改您的Intellisense设置(之前我从未听过有人抱怨过IntelliSense。)
答案 1 :(得分:0)
您仍然可以看到它,因为您看到System.Web.UI.Control.SkinID
,这是公开的。
您可以通过为private
和get
访问者设置访问修饰符set
来隐藏该属性,但是基本属性必须是虚拟的或抽象的才能被覆盖。
答案 2 :(得分:0)
您无法隐藏继承的属性。这将违反Liskov替代原则。