How to set dynamic value in my Attribute

后端 未结 2 1869
余生分开走
余生分开走 2020-11-28 15:25

I would like to pass a dynamic variable as a parameter to my attribute. Here I want to use Environment.MachineName, see the code below:

public interface IMon         


        
2条回答
  •  余生分开走
    2020-11-28 16:00

    You could create an enum with special values, and accept them in a separate constructor overload in the attribute:

    enum SpecialConfigurationValues
    {
        MachineName
        // , other special ones
    }
    
    class ConfigurationKeyAttribute : Attribute
    {
        private string _key;
        private string _value;
    
        public ConfigurationKeyAttribute(string key, string value)
        {
            // ...
        }
    
        public ConfigurationKeyAttribute(string key, SpecialConfigurationValues specialValue)
        {
            _key = key;
            switch (specialValue)
            {
                case SpecialConfigurationValues.MachineName:
                    _value = Environment.MachineName;
                    break;
                // case 
            }
        }
    }
    
    [ConfigurationKey("MonitoringService", SpecialConfigurationValues.MachineName)]
    

提交回复
热议问题