Definir o valor do atributo personalizado do Enum em C#

0

Pergunta

Eu tenho um atributo personalizado, como abaixo,

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

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

Ao usar este atributo(SetValForAll) eu quero passar o valor do Limite usando um Enum, mas ele está mostrando o erro 'Um atributo argumento deve ser uma expressão constante, typeof expressão ou criação de matriz de expressão de um atributo de tipo de parâmetro'

Meu Enum é como abaixo,

        public enum LimitEnum
        {
            max,
            min
        }

Abaixo, trecho de código está jogando erro no atributo de linha.

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

Como eu posso tomar o valor de LimitEnum enquanto usando SetValForAll atributo, em vez de passar codificado cadeia?

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

Melhor resposta

0

Você pode usar o nameof expressão que você irá obter o enum como uma constante de seqüência de caracteres:

[SetValForAll(nameof(LimitEnum.max))]

(Referência.)

2021-11-23 22:27:24

o que é uma boa idéia para passar o nome como uma constante de seqüência de caracteres.
R.Abbasi

Obrigado @stenehr. Ele funciona. Eu tenho a marca de sua resposta o mais Aceito
Abhishek
0

Bem, você não pode passar não-cadeias de caracteres constantes em valores de atributo. Por que você não use o seu enum tipo, em vez de string para o seu imóvel? Você pode usar LimitEnum para passar no construtor.

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

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

e usá-lo assim :

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

para a sua resposta. Esta poderia ser a melhor opção. Obrigado por sua sugestão
Abhishek

Em outros idiomas

Esta página está em outros idiomas

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