[英]Using enum in data annotation
我正在使用這樣的數據注釋:
[RequiresAnyRole("Admin", "Member")]
我不喜歡傳遞字符串,因為以后重構可能會很痛苦,但是如果我嘗試像這樣進行枚舉:
public enum Roles
{
Admin,
Member
}
然后嘗試將枚舉轉換為字符串,如下所示:
[RequiresAnyRole(Roles.Admin.ToString(), Roles.Member.ToString())]
然后我得到錯誤:
錯誤 CS0182 屬性參數必須是屬性參數類型的常量表達式、typeof 表達式或數組創建表達式
我對這個錯誤的理解是它在編譯時必須是一個字符串。 我試圖制作一個以枚舉為鍵的 static 字典,但這也不起作用。
以可以稍后重構的方式傳遞這些值的最佳方法是什么,即不傳遞字符串而是傳遞某種可以更新的引用?
這是使用nameof
的絕佳機會。 您可以保留枚舉,並執行以下操作:
[RequiresAnyRole(nameof(Roles.Admin), nameof(Roles.Member))]
nameof
表達式是常量表達式。
當然,如果您可以更改屬性的聲明,您應該將其更改為接受您的Roles
枚舉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.