ตั้งค่ากำหนดค่าของแอททริบิวต์จาก 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)ฉันอยากจะส่งค่ากลับมาเป็นค่าเป็นค่า จำกัด การใช้หนึ่ง Enum แต่มันเป็นการแสดงข้อผิดพลาด'ลักษณะเฉพาะข้อโต้แย้งต้องเป็นอย่างต่อเนื่องเงื่อนไขการ typeof รแสดงหรืออาเรย์การสร้างรแสดงของแอททริบิวต์พารามิเตอร์ประเภท'

ฉัน Enum เป็นอย่างข้างล่าง

        public enum LimitEnum
        {
            max,
            min
        }

ที่ด้านล่างชิ้นส่วนของรหัสคือโยเกิดข้อผิดพลาดในแอททริบิวต์บนเส้น.

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

ยังไงฉันสามารถใช้ค่าจาก LimitEnum ขณะที่ใช้ SetValForAll แอททริบิวต์มากกว่าที่ผ่า hardcoded ข้อความ?

.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 ต้องผ่านอยู่ใน constructor.

   [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ý
..................................................................................................................