![](/img/trans.png)
[英]Custom Attribute - getting “not a valid named attribute argument” for an enum
[英]Using an Enum as an Attribute Argument
這是我要使用的代碼:
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }
EnumHelper看起來像:
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
public Type MyEnum { get; set; }
public EnumHelper(Type enum)
{
MyEnum = enum;
}
}
我在EnumHelper(Days)上遇到的錯誤是“ Enum Name此時無效”。 我是在做錯什么,還是做不到?
更多信息
我試圖傳遞枚舉(天),並隨機取回其中一個值。
沒關系:我把這部分復雜化了。
您正在嘗試傳遞類型名稱 ,就像它是參數值一樣 。 你不能那樣做。 但是,您可以執行以下操作:
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
public Type EnumType;
public EnumHelper(Type enumType)
{
EnumType = enumType;
}
}
...
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }
然而:
EnumType
為公共字段; 使其成為財產。 EnumType
實際上是一個枚舉。 您不能在編譯時執行此操作,但是可以在執行時執行。 EnumHelperAttribute
(或更EnumHelperAttribute
,是更具描述性的)-這不會引起錯誤,但更常見 如果您可以讓我們知道您要完成的工作,我們可能會對您有所幫助。
屬性中的參數只能是常量。 如果要傳遞枚舉類型,則必須僅傳遞類型:
[EnumHelper(typeof(Days))]
public Days DayOfWeek { get; set; }
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true)]
public class EnumHelper : Attribute
{
public Type MyEnum;
public EnumHelper(Type enum)
{
MyEnum = enum;
}
}
參數應該是枚舉值,而不是枚舉類型,例如:
[EnumHelper(Days.Sat)]
只是想補充一下我遇到的問題並加以解決。 我的財產與枚舉相同。 該代碼將編譯並運行,但是我在IDE中收到一條紅線錯誤消息。 將屬性名稱更改為唯一的名稱將清除該消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.