c# – 属性错误:属性参数必须是属性参数类型的常量表达式,typeo
发布时间:2020-12-16 01:48:07 所属栏目:百科 来源:网络整理
导读:我想将一些枚举列表传递给我的Attribute属性.但是你可以将List传递给Attribute的属性.所以我尝试将其转换为字符串表示并尝试执行以下操作: [MyAtt(Someproperty = Enums.SecurityRight.A.ToString() + "" + (Enums.SecurityRight.B.ToString() ))] 但是,这
我想将一些枚举列表传递给我的Attribute属性.但是你可以将List传递给Attribute的属性.所以我尝试将其转换为字符串表示并尝试执行以下操作:
[MyAtt(Someproperty = Enums.SecurityRight.A.ToString() + "&" + (Enums.SecurityRight.B.ToString() ))] 但是,这会给出错误:“属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式” 我知道你只能传递常数.但是我怎么逃避这个呢?任何招数? 谢谢. 解决方法
如果我的C#编码关闭,请原谅我.我用VB.
您可以使用const值. namespace Enums { static class SecurityRight { const String A = "A"; const String B = "B"; } } [MyAtt(StringProperty = Enums.SecurityRight.A + "&" + Enums.SecurityRight.B)] 如果属性接受与枚举相同的数据类型,则可以使用枚举. namespace Enums { [Flags()] enum int SecurityRight { A = 1; B = 2; } } [MyAtt(IntegerProperty = Enums.SecurityRight.A | Enums.SecurityRight.B)] 编辑:更改上面的IntegerProperty以接收多个值. 属性在编译时设置,而不是在运行时设置.通过使用ToString,您将调用在运行时使用的代码.您必须使用常量值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |