[英]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.User
为true
。
但是,像在评论中一样,我不会强烈推荐它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.