我有两个项目引用相同的预编译(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
}
重要说明:此代码必须预编译,因此无法使用预处理程序指令。
答案 0 :(得分:1)
你可以拥有它,但它们都不能在同一个命名空间中。你可以有一个module.Extern.Roles
,另一个是module.Intern.Roles
,但是如果你想要它们在同一个命名空间中,你必须将值组合成一个枚举或更改其中一个它们。
答案 1 :(得分:1)
这可能会让人感到困惑,但如果你真的想要那个方向的东西,通过轻微修改,那么:
public enum Roles
{
Admin = 0,
Staff = 1,
User = 1,
Vip = 2,
UserInternal = 2,
}
注意我必须重命名你的一个名字。
您可以比较整数值,即使名称也是真的(Roles.Staff == Roles.User
是true
。
但是在评论中我不会强烈推荐它。