簡體   English   中英

C#在運行時切換枚舉

[英]C# Switch enum at runtime

我有兩個引用相同的預編譯(C#)dll的項目。 該.dll在其命名空間中包含一個公共枚舉,但是:兩個項目都必須在此枚舉中使用不同的值。

是否可以定義類似的東西? (偽代碼)

namespace module
{

    #if ConfigurationManager.AppSettings["project"] == "Extern"

    public enum Roles
    {
        Admin = 0,
        User = 1,
        Vip = 2
    }

    #else /* "Intern" */

    public enum Roles
    {
        Admin = 0,
        Staff = 1,
        User = 2
    }

    #end
}

重要:該代碼必須預先編譯,因此無法使用預處理程序指令。

您可以擁有它,但是它們不能位於同一名稱空間中。 你可以有一個是module.Extern.Roles ,另一個是module.Intern.Roles ,但如果你希望他們在相同的命名空間,你必須到值組合成一個單一的枚舉或更改一個名稱他們。

這很可能會使人們感到困惑,但是如果您真的想要朝這個方向做些什么,並且稍加修改,該怎么辦?

    public enum Roles
    {
        Admin = 0,
        Staff = 1,
        User = 1,
        Vip = 2,
        UserInternal = 2,
    }

注意我必須重命名您的名字之一。

您可以比較整數值,甚至可以將名稱與進行比較( Roles.Staff == Roles.Usertrue

但是,像在評論中一樣,我不會強烈推薦它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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