C#运行时切换枚举

C#运行时切换枚举,c#,precompiled,C#,Precompiled,我有两个项目引用了相同的预编译(C#)dll。 此.dll在其命名空间中包含公共枚举,但: 这两个项目在此枚举中必须使用不同的值 有没有可能定义这样的东西?(伪代码) 重要提示:此代码必须预编译,因此不可能使用预处理器指令。您可以使用该指令,但它们不能位于同一命名空间中。您可以有一个是module.Extern.Roles,另一个是module.Intern.Roles,但如果您希望它们位于同一名称空间中,则必须将这些值组合到一个枚举中或更改其中一个的名称。这可能会让人感到困惑,但如果您真的想在

我有两个项目引用了相同的预编译(C#)dll。 此.dll在其命名空间中包含公共枚举,但: 这两个项目在此枚举中必须使用不同的值

有没有可能定义这样的东西?(伪代码)


重要提示:此代码必须预编译,因此不可能使用预处理器指令。

您可以使用该指令,但它们不能位于同一命名空间中。您可以有一个是
module.Extern.Roles
,另一个是
module.Intern.Roles
,但如果您希望它们位于同一名称空间中,则必须将这些值组合到一个枚举中或更改其中一个的名称。

这可能会让人感到困惑,但如果您真的想在这方面有所成就,稍作修改后,如何:

    public enum Roles
    {
        Admin = 0,
        Staff = 1,
        User = 1,
        Vip = 2,
        UserInternal = 2,
    }
注意,我不得不重命名你的一个名字

您可以将整数值和偶数与将为true的名称进行比较(
Roles.Staff==Roles.User
is
true


但是就像在评论中一样,我不会强烈推荐它。

作为一个建议,所有的
enum
s本质上都是静态的,因此没有必要“重新声明”它们本身就是这样。似乎真的有误导性,我也不确定我是否想知道这是否可能。我不认为
公共静态枚举中的
static
对您有任何帮助,或者不起作用-是的,它们不需要是静态的:)(编辑的问题)您不能有一个根据什么不同而不同的枚举(或谁)正在使用它。这没有意义。
    public enum Roles
    {
        Admin = 0,
        Staff = 1,
        User = 1,
        Vip = 2,
        UserInternal = 2,
    }