Nastaviť vlastnú hodnotu atribútu z Enum v C#

0

Otázka

Mám jeden vlastný atribút ako nižšie,

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

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

Pri používaní tohto atribútu(SetValForAll) chcem odovzdať hodnotu Limit pomocou jedného Vymenovaného ale to zobrazuje chyba "atribút argument musí byť konštantný výraz, typeof výraz alebo pole tvorby prejavu atribútu typ parametra'

Môj Enum je ako nižšie

        public enum LimitEnum
        {
            max,
            min
        }

Nižšie kus kódu je hádzanie chyba v atribúte linky.

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

Ako môžem mať hodnotu od LimitEnum pri používaní SetValForAll atribút, skôr ako absolvovanie napevno reťazec?

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

Najlepšiu odpoveď

0

Mohli by ste použiť nameof výraz, ktorý sa vám enum ako reťazcová konštanta:

[SetValForAll(nameof(LimitEnum.max))]

(Ref.)

2021-11-23 22:27:24

to je dobrý nápad, ak chcete prejsť názov ako konštantný reťazec.
R.Abbasi

Ďakujeme, že ste @stenehr. Funguje to. Mám označiť vašu odpoveď, ako boli Prijaté
Abhishek
0

Dobre, nie je možné prejsť non-konštantné reťazce v atribúte hodnoty. Prečo nie, môžete použiť svoj enum typ namiesto string pre vašu nehnuteľnosť? Môžete použiť LimitEnum prejsť konštruktér.

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

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

a používať to, ako je tento :

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

za vašu odpoveď. Toto by mohla byť lepšia voľba. Ďakujem za váš návrh
Abhishek

V iných jazykoch

Táto stránka je v iných jazykoch

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