c#运行时的开关枚举
本文关键字:枚举 开关 运行时 | 更新日期: 2023-09-27 18:10:37
我有两个项目引用相同的预编译(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
}
重要:此代码必须预编译,因此不可能使用预处理器指令。
这可能会让人感到困惑,但如果你真的想在这个方向上做一些轻微的修改,那么:
public enum Roles
{
Admin = 0,
Staff = 1,
User = 1,
Vip = 2,
UserInternal = 2,
}
注意:我不得不重命名你们中的一个名字。
您可以将整数值和偶数与将为真(Roles.Staff == Roles.User
是true
)的名称进行比较。
但是就像评论中所说的那样,我不会强烈推荐它
您可以这样做,但它们不能在同一个名称空间中。您可以有一个是module.Extern.Roles
,另一个是module.Intern.Roles
,但如果您希望它们在同一个名称空间中,您必须将这些值组合成单个enum或更改其中一个的名称。