我有一個如下所示的自定義屬性,
[AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = false)]
public class SetValForAll : Attribute
{
public string Limit { get; set; }
public SetValForAll(string limit)
{
Limit = limit;
}
}
在使用此屬性(SetValForAll)時,我想使用一個 Enum傳遞Limit的值,但它顯示錯誤“屬性引數必須是一個常量運算式、typeof 運算式或屬性引數型別的陣列創建運算式”
我的列舉如下所示,
public enum LimitEnum
{
max,
min
}
下面的代碼在屬性行中拋出錯誤。
[SetValForAll(LimitEnum.max.ToString())]
public class UsingTheAttributeHere
{
}
如何在使用SetValForAll屬性時從 LimitEnum 獲取值,而不是傳遞硬編碼字串?
uj5u.com熱心網友回復:
您可以使用nameof將獲得enum作為字串常量的運算式:
[SetValForAll(nameof(LimitEnum.max))]
(參考。)
uj5u.com熱心網友回復:
好吧,您不能在屬性值中傳遞非常量字串。你為什么不使用你的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)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365008.html
