设定的属性的价值从Enum在C#

0

的问题

我有一个定义属性如下,

   [AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = false)]
    public class SetValForAll : Attribute
    {
        public string Limit { get; set; }

        public SetValForAll(string limit)
        {
            Limit = limit;
        }
    }

虽然使用这种属性(SetValForAll)我想要传递的价值的 限制 使用一枚举,但这是出错误的属性的参数必须是一个常数表达式、类型或表阵列中的创建表达的一种特性参数类型的'

我枚举是像下面,

        public enum LimitEnum
        {
            max,
            min
        }

以下一段代码扔错误的属性行。

[SetValForAll(LimitEnum.max.ToString())]
public class UsingTheAttributeHere
{
}

我怎么可以把价值从LimitEnum同时使用 SetValForAll 属性,而不是通过硬编码的字符串?

.net attributes c# enums
2021-11-23 20:46:12
2

最好的答案

0

你可以使用 nameof 表情那会让你 enum 作为一串恒定:

[SetValForAll(nameof(LimitEnum.max))]

(参考.)

2021-11-23 22:27:24

这是一个很好的想法,以通过名为恒串。
R.Abbasi

谢谢你@stenehr. 它的工作。 我有标记你的答案作为接受
Abhishek
0

好吧,你可以不通过非不断串在属性的价值观。 你为什么不用你 enum 类型,而不是的 string 对于您的财产? 你可以使用 LimitEnum 通过在构造。

   [AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = false)]
    public class SetValForAll : Attribute
    {
    public LimitEnum Limit { get; set; }

    public SetValForAll(LimitEnum limit)
    {
        Limit = limit;
    }
    }

并使用这样的:

[SetValForAll(LimitEnum.max)]
2021-11-23 21:04:15

你的答案。 这可能是更好的选择。 谢谢你的建议
Abhishek

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................