隐藏派生属性不起作用?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中有点烦人,因为它们太多了”。但你并不需要编辑它,更不用说纠正一个不存在的错误(烦恼是主观的)。