Search code examples
c#constantsproperties.settings

Using Properties.Settings.Default as an argument for DisplayName


I am attempting to store values for a displayName attribute from a setting held in the app.config file.

[System.ComponentModel.DisplayName(Properties.Settings.Default.field2Name)]

This does not work because it must be a constant value, which Properties.Settings.Default clearly is not. Is there any simple way to get around this?


Solution

  • Since the DisplayName property is virtual, you could do something like that:

    public class DisplayNameSettingsKeyAttribute : DisplayNameAttribute
    {
        private readonly string _settingsKey;
    
        public DisplayNameSettingsKeyAttribute(string settingsKey)
        {
            _settingsKey = settingsKey;
        }
    
        public string SettingsKey
        {
            get { return _settingsKey; }
        }
    
        public override string DisplayName
        {
            get { return (string)Properties.Settings.Default[_settingsKey]; }
        }
    }
    

    And use it like that:

    [DisplayNameSettingsKey("field2Name")]