C#覆盖DefaultValue属性
本文关键字:属性 DefaultValue 覆盖 | 更新日期: 2023-09-27 18:29:21
在C#用户控件中,是否可以重写应用于属性的属性,而不必重写该属性?
例如,您想要一个继承时具有"Browseable(true)"属性的属性,但对于您的控件,您想要"Browseble(false)"。是否必须重写属性本身,或者是否可以对TypeDescriptor执行某些操作?
如果该属性不是虚拟的,则不可能重写,并且可以使用"new",则无法通过引用基类(如"Control")来访问该属性。
即。更改文本框控件上滚动条默认值的简单示例。
public partial class MyTextBox : TextBox
{
public MyTextBox()
{
this.ScrollBars = ScrollBars.Vertical;
}
[DefaultValue(typeof(ScrollBars),"Vertical")]
public ScrollBars ScrollBars
{
get { return base.ScrollBars; }
set { base.ScrollBars = value; }
}
}
// this doesn't go via property setter as not overridden
TextBox textbox = new MyTextBox();
textbox.ScrollBars = ScrollBars.None;
谢谢,Ross
不,如果不重写,就无法执行此操作。如果房产不是虚拟的,你就注定要失败。