繁体   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