隐藏派生属性不起作用?C#
我有一个自定义控件,称之为隐藏派生属性不起作用?C#,c#,inheritance,properties,C#,Inheritance,Properties,我有一个自定义控件,称之为ctrlFoo,它源自System.Web.UI.control 当这个自定义控件被实例化时,我可以看到所有System.Web.UI.control的公共属性,这在intellisense中有点烦人,因为它们太多了 在ctrlFoo里面我已经试过了 private new string SkinID { get; set; } 但是我仍然可以在初始化的ctrlFoo实例中看到这个属性 有人能提供任何其他建议吗?您仍然可以看到它,因为您看到了System.Web.UI
ctrlFoo
,它源自System.Web.UI.control
当这个自定义控件被实例化时,我可以看到所有System.Web.UI.control
的公共属性,这在intellisense中有点烦人,因为它们太多了
在ctrlFoo里面
我已经试过了
private new string SkinID { get; set; }
但是我仍然可以在初始化的ctrlFoo
实例中看到这个属性
有人能提供任何其他建议吗?您仍然可以看到它,因为您看到了
System.Web.UI.Control.SkinID
,它是公共的
您可以通过为
get
和set
访问器设置访问修饰符private
来隐藏该属性,但基本属性必须是虚拟的或抽象的才能被覆盖。您缺少从控件继承的要点。如果ctrlFoo
确实是一个控件
,那么您不应该隐藏控件
的属性<代码>控件
有一个SkinID
,因此ctrlFoo
也应该有一个SkinID
如果您不喜欢Intellisense中出现的内容,请更改您的Intellisense设置(我以前从未听到任何人抱怨Intellisense)。您无法隐藏继承的属性。这将违反利斯科夫替代原则 为什么要隐藏类具有完全有效访问权限的函数?如果它们不适用,也许值得考虑您是否继承了正确的类…?@Kiley Naro System.Web.UI.Control是基类。我想我听到有人称IntelliSense为“烦人”只是时间问题。让我告诉你IntelliSense在1990年是如何工作的…@Jon请指出我称之为IntelliSense烦人的地方,我会纠正它。@maxp:因为你问,“这在IntelliSense中有点烦人,因为它们太多了”。但你并不需要编辑它,更不用说纠正一个不存在的错误(烦恼是主观的)。