配置DefaultValue行为

时间:2016-02-23 10:23:12

标签: c#

[ConfigurationProperty("Name", DefaultValue = "test")]
public string Name
{
    get { return (string)this["Name"];  }
    set { this["Name"] = "Ram"; }
}

CorticonConfig config = new CorticonConfig();
string test = config.Name;

我有一个带有“Name”的属性,而且我将值设置为name.While我试图获取值,我得到默认值。

我的问题是:我们可以设置属性值如上所述吗?

Default value属性的行为是什么?

1 个答案:

答案 0 :(得分:0)

您的属性设置器无法正常工作。

当您设置属性(set)时会执行property = something部分,在这种情况下,您的something将位于value关键字上。< / p>

所以在你的情况下,如果你这样做:

CorticonConfig config = new CorticonConfig();
config.Name = "whatever";
string test = config.Name;    

test"Ram",因为您总是在那里指定该值,但除非您执行config.Name = <something>,否则它不会执行该代码。

拥有这样的setter的正确方法是:

   set
   {
     this["Name"] = value;
   }

如果您需要的属性不是您在属性上设置的默认值,请在构造对象后应用它:

CorticonConfig config = new CorticonConfig();
config.Name = "Ram";

如果没有保存任何设置,则传递属性的DefaultValue会为其提供默认值,因此当您阅读它时,它会返回该值。