Две вещи, которые я могу придумать, - использовать DefaultValue, например:
[ConfigurationProperty("customsettingitem", DefaultValue = -1)]
public int CustomSettingItem { get { return (int)this["customsettingitem"]; } }
Предполагается, что есть какое-то значение, которое недопустимо. В этом случае CustomSettingItem == -1 означает, что он не был установлен, а> = 0 было значением, установленным в конфигурации. Конечно, это предполагает, что -1 не был допустимым вводом в первую очередь.
Вторая идея - вместо этого использовать обнуляемый int:
[ConfigurationProperty("customsettingitem", IsRequired = false)]
public int? CustomSettingItem { get { return (int?)this["customsettingitem"]; } }
Теперь, если в конфиге ничего не установлено, по умолчанию вместо нуля должно быть 0.