如果未指定默认值,ConfigurationPropertyAttribute.DefaultValue的值是多少?

时间:2015-05-12 15:50:41

标签: c# configuration

以下配置属性的默认值很明显。它是" Arial":

  [ConfigurationProperty("name", DefaultValue = "Arial", IsRequired = true)]
  public string Name
  {
     get { return (string)this["name"]; }
     set { this["name"] = value; }
  }

但是,如果我删除" DefaultValue"该怎么办?部分,如下?

  [ConfigurationProperty("name", IsRequired = true)]
  public string Name
  {
     get { return (string)this["name"]; }
     set { this["name"] = value; }
  }

在Visual Studio中,属性上的DefaultValue属性的值列为{object},如果我在其上调用.ToString(),我得到" System.Object"。

如何检查属性上是否实际指定了默认值?

1 个答案:

答案 0 :(得分:0)

根据参考源,看起来私有地创建了一个对象,这意味着无法访问它:

private object _DefaultValue = ConfigurationElement.s_nullPropertyValue;

(来源:http://referencesource.microsoft.com/#System.Configuration/System/Configuration/ConfigurationPropertyAttribute.cs,31

但是,我能够解决问题如下:

var isDefaultSpecified = propertyAttribute.DefaultValue != null && propertyAttribute.DefaultValue.GetType() != typeof(object);