[英]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.