C#运行时切换枚举
我有两个项目引用了相同的预编译(C#)dll。 此.dll在其命名空间中包含公共枚举,但: 这两个项目在此枚举中必须使用不同的值 有没有可能定义这样的东西?(伪代码)C#运行时切换枚举,c#,precompiled,C#,Precompiled,我有两个项目引用了相同的预编译(C#)dll。 此.dll在其命名空间中包含公共枚举,但: 这两个项目在此枚举中必须使用不同的值 有没有可能定义这样的东西?(伪代码) 重要提示:此代码必须预编译,因此不可能使用预处理器指令。您可以使用该指令,但它们不能位于同一命名空间中。您可以有一个是module.Extern.Roles,另一个是module.Intern.Roles,但如果您希望它们位于同一名称空间中,则必须将这些值组合到一个枚举中或更改其中一个的名称。这可能会让人感到困惑,但如果您真的想在
重要提示:此代码必须预编译,因此不可能使用预处理器指令。您可以使用该指令,但它们不能位于同一命名空间中。您可以有一个是
module.Extern.Roles
,另一个是module.Intern.Roles
,但如果您希望它们位于同一名称空间中,则必须将这些值组合到一个枚举中或更改其中一个的名称。这可能会让人感到困惑,但如果您真的想在这方面有所成就,稍作修改后,如何:
public enum Roles
{
Admin = 0,
Staff = 1,
User = 1,
Vip = 2,
UserInternal = 2,
}
注意,我不得不重命名你的一个名字
您可以将整数值和偶数与将为true的名称进行比较(Roles.Staff==Roles.User
istrue
)
但是就像在评论中一样,我不会强烈推荐它。作为一个建议,所有的
enum
s本质上都是静态的,因此没有必要“重新声明”它们本身就是这样。似乎真的有误导性,我也不确定我是否想知道这是否可能。我不认为公共静态枚举中的static
对您有任何帮助,或者不起作用-是的,它们不需要是静态的:)(编辑的问题)您不能有一个根据什么不同而不同的枚举(或谁)正在使用它。这没有意义。
public enum Roles
{
Admin = 0,
Staff = 1,
User = 1,
Vip = 2,
UserInternal = 2,
}