[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属性的行为是什么?
答案 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
会为其提供默认值,因此当您阅读它时,它会返回该值。