如何更改子类中的DefaultValue属性的值

时间:2014-09-10 20:08:00

标签: c# polymorphism

我不确定我想做什么是可能的,但我想我会问。

我有一个抽象基类,它有一个用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属性的值,使其成为“新值”?

1 个答案:

答案 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;