C'deki Enum'dan özel öznitelik değerini ayarlama#

0

Soru

Aşağıdaki gibi bir özel özniteliğim var,

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

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

Bu özniteliği kullanırken(SetValForAll) Bir Enum kullanarak Limit değerini geçmek istiyorum ancak 'Bir öznitelik argümanı bir öznitelik parametresi türünde sabit bir ifade, tür ifadesi veya dizi oluşturma ifadesi olmalıdır' hatası gösteriyor.

Benim Enum aşağıdaki gibidir,

        public enum LimitEnum
        {
            max,
            min
        }

Aşağıdaki kod parçası öznitelik satırında hata veriyor.

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

Kodlanmış dizeyi geçmek yerine SetValForAll özniteliğini kullanırken limitenum'dan nasıl değer alabilirim?

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

En iyi cevabı

0

Kullanabilirsin nameof sizi alacak ifade enum bir dize sabiti olarak:

[SetValForAll(nameof(LimitEnum.max))]

(Başvurma.)

2021-11-23 22:27:24

adı sabit bir dize olarak geçirmek iyi bir fikirdir.
R.Abbasi

Teşekkürler @ stenehr. İşe yarıyor. Cevabınızı Kabul Edilmiş olarak işaretledim.
Abhishek
0

Öznitelik değerlerinde sabit olmayan dizeleri geçiremezsiniz. Neden seninkini kullanmıyorsun? enum yerine yazın string mülkün için mi? Kullanabilirsiniz LimitEnum yapıcıyı geçmek için.

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

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

ve bunu böyle kullan :

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

için cevap. Bu daha iyi bir seçenek olabilir. Öneriniz için teşekkür ederiz
Abhishek

Diğer dillerde

Bu sayfa diğer dillerde

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