簡體   English   中英

在數據注釋中使用枚舉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM