Я определил следующее enum
:
public enum DeviceType
{
[Description("Set Top Box")]
Stb = 1,
Panel = 2,
Monitor = 3,
[Description("Wireless Keyboard")]
WirelessKeyboard = 4
}
Я использую атрибут Description
, чтобы позволить мне вытащить более читаемую пользователем версию перечисления для отображения в пользовательском интерфейсе. Я получаю описание, используя следующий код:
var fieldInfo = DeviceType.Stb.GetType().GetField(DeviceType.Stb.ToString());
var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
var description = (attributes.Length > 0 ? attributes[0].Description : DeviceType.Stb.ToString());
Приведенный выше код даст мне: description = "Set Top Box"
. Если атрибут Description
не установлен, он даст мне строковое значение перечисления.
Теперь я хочу добавить второй/пользовательский атрибут для каждого из перечислений (так называемый "Value" для примеров). например:
public enum DeviceType
{
[Description("Set Top Box")]
[Value("19.95")]
Stb = 1,
[Value("99")]
Panel = 2,
[Value("199.99")]
Monitor = 3,
[Description("Wireless Keyboard")]
[Value("20")]
WirelessKeyboard = 4
}
Мне нужно будет вытащить новый атрибут Value
так же, как в настоящее время с атрибутом Description
.
Можно ли расширить существующий атрибут Description
, чтобы каким-то образом включить новый атрибут Value
, или лучше всего создать новый атрибут отдельно?