【发布时间】:2015-10-06 20:06:25
【问题描述】:
我使用this 文章为enum 实现了Custom Attributes,使用hard coding 值一切正常,但我需要传递run time 中的参数,例如:
enum MyItems{
[CustomEnumAttribute("Products", "en-US", Config.Products)]
Products
}
Config.Products (bool value)是问题所在,错误是:
An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
有没有办法解决这个问题?
更新
enum(在本例中为 MyItems)有 20 个项目,每个项目必须有 custom attribute,然后我想从 Enum 的项目生成菜单,取决于 Culture 我得到匹配的标题,也取决于在Config,我决定显示/隐藏菜单中的项目(事实上如果 Config.X == false,我不会将项目添加到菜单中)
另外,对于 Config,我有另一个系统,我想将该系统与菜单同步,这就是我想在运行时获取 Config.X 的原因。
谢谢!
【问题讨论】:
-
代替属性,您可以创建一个扩展方法来查找
Config.<enumName> -
抱歉,没听明白?我知道如何创建扩展方法,但是我该如何混合这两个东西呢?
-
你能在属性构造函数或静态方法
Get中访问Config.Products吗?
标签: c# enums custom-attributes