示例:
有人為了顯示中文,這樣定義列舉嗎?
publicenumtimeofday這樣定義,很彆扭,特別是在使用的時候,;
比如,this.time = timeofday.上午;
而且你會逐漸發現它的侷限性。
列舉定義很頭疼:
在系統開發中,我們經常使用列舉,但是定義列舉是個頭疼的問題。
按照習慣我們習慣將列舉項定義為英語,但是,在使用的時候,特別針對國內客戶的時候,如果顯示的英文,則不符合要求,不易於使用者使用。
儘管現在列舉定義也能定義中文列舉項,但在優雅的英文**中穿插著中語,確實很不爽。如果涉及多語,很難擴充套件。
也有人經常用到常量來代替列舉,但這種方法在系統開發中不太可取,具體見:列舉與常量。
為了方便使用者使用, 希望能夠找到一種比較好的方法,將列舉轉為我們想要的集合。
列舉的定義中加入描述,如果要支援多語,則直接修改列舉描述即可。也不用修改其他**。
通過反射思想,得到針對某一枚舉型別的描述。具體實現起來,有如下**中的三個不同的的方式。
usingview codesystem;
using
system.collections.generic;
using
system.collections.specialized;
using
system.reflection;
using
system.componentmodel;
namespace
", nvc[key]));
}console.writeline(
"\n2. 直接方式1,對timeofday結構體的羅列:");
dictionary
dic = getenumdic(typeof
(timeofday));
foreach (string key in
dic.keys)
", dic[key]);
}console.writeline(
"\n3. 直接方式2,對timeofday結構體中某一項的描述:");
console.writeline(
string.format(timeofday.moning.tostring() + ":"
, getenumdes(timeofday.moning)));
}//////
從列舉型別和它的特性讀出並返回乙個鍵值對
/// ///
type,該引數的格式為typeof(需要讀的列舉型別)
///鍵值對 public
static
namevaluecollection getnvcfromenumvalue(type enumtype)
else
nvc.add(strvalue, strtext);}}
return
nvc;
}//////
返回 dic
《列舉項,描述》
/// ///
///dic《列舉項,描述》
public
static dictionarygetenumdic(type enumtype)
}return
dic;
}//////
獲得某個列舉項的描述
/// ///
///public
static
string getenumdes(object
value)
else}}
public
enum
timeofday
;//public enum timeofdays
//;}
參考文章
列舉顯示中文問題
列舉轉中文,通過反射方法與描述的方式獲取
示例 有人為了顯示中文,這樣定義列舉嗎?publicenumtimeofday 這樣定義,很彆扭,特別是在使用的時候,比如,this.time timeofday.上午 而且你會逐漸發現它的侷限性。列舉定義很頭疼 在系統開發中,我們經常使用列舉,但是定義列舉是個頭疼的問題。按照習慣我們習慣將列舉項定...
反射的使用方法(轉)
本文主要介紹net技術中 反射 的使用方法,包括如何對屬性賦值,獲取變數,屬性,方法,事件的列表,如何設定屬性及呼叫方法等.希望對新人有所幫助咯.反射的使用方法 public class testproperty set public string authorid set public testp...
c so 反射 C 反射的方法與實現
1.什麼是反射?反射是程式獲取自身資訊的能力 2.反射有什麼用?可以用於動態建立型別,跨語言跨平台資料互動,持久化,序列化等等。3.反射包含哪些功能?至少包含以下功能 列舉所有member 獲取member的name和type 能夠get set member 4.有哪些反射方法?反射主要有3種實現...