我不确定我想做什么是可能的,但我想我会问。
我有一个抽象基类,它有一个用DefaultValue
属性修饰的属性,如下所示:
public abstract MyBaseClass {
[DefaultValue( "some value" )]
public string StringProperty {
get { return iStringProperty; }
set { iStringProperty = value;
}
protected string iStringProperty = "some value";
// Other code here
}
我想从MyBaseClass
派生一个子类,但我希望DefaultValue
属性中的值以及属性的默认值不同。为此,我在子类中添加了一个默认构造函数,如下所示:
public class MyChildClass : MyBaseClass {
// Type specific properties & fields here
public MyChildClass()
: base() {
iStringProperty = "new value";
}
// Other code here
}
如何更改派生类中DefaultValue
属性的值,使其成为“新值”?
答案 0 :(得分:3)
如果您的媒体资源是虚拟的,您可以覆盖它并为其应用DefaultValue
。
[DefaultValue( "new value" )]
public override string StringProperty
{
get { return iStringProperty; }
set { iStringProperty = value;}
}
如果没有,则需要使用new
关键字隐藏该属性并应用新的DefaultValue
[DefaultValue( "new value" )]
public new string StringProperty
{
get { return iStringProperty; }
set { iStringProperty = value;}
}
在这两种情况下,您都不需要提供新的实施。您可以将呼叫委托给base.StringProperty
;