我已定义了自定义enum
DescriptionAttribute
(请参阅我之前的问题:Multiple enum descriptions)
public class DescriptionWithValueAttribute : DescriptionAttribute
{
public Decimal Value { get; private set; }
public DescriptionWithValueAttribute(String description, Decimal value)
: base(description)
{
Value = value;
}
}
我的enum
看起来像这样:
public enum DeviceType
{
[DescriptionWithValueAttribute("Set Top Box", 9.95m)]
Stb = 1,
}
编译时出现以下错误:
属性参数必须是常量表达式,typeof表达式 或属性参数类型
的数组创建表达式
我也尝试过:[DescriptionWithValueAttribute("Set Top Box", (Decimal)9.95)]
有什么想法吗?
答案 0 :(得分:3)
根据this article:
属性参数仅限于以下类型的常量值:
所以,你不能使用Decimal。用浮球或双层替换它。其他方式 - 将值存储为字符串并解析它。
答案 1 :(得分:0)
我已将自定义enum
DescriptionAttribute
更新为以下内容:
public class DescriptionWithValueAttribute : DescriptionAttribute
{
public Decimal Value { get; private set; }
public DescriptionWithValueAttribute(String description, Double value)
: base(description)
{
Value = Convert.ToDecimal(value);
}
}
它希望Double
然后转换为Decimal
,因为我需要最终值为Decimal
。按预期工作。