列舉轉中文,通過反射方法與描述的方式獲取

2022-03-23 12:22:25 字數 1988 閱讀 9979

示例:

有人為了顯示中文,這樣定義列舉嗎?

publicenumtimeofday

;

這樣定義,很彆扭,特別是在使用的時候,

比如,this.time = timeofday.上午;

而且你會逐漸發現它的侷限性。

列舉定義很頭疼:

在系統開發中,我們經常使用列舉,但是定義列舉是個頭疼的問題。

按照習慣我們習慣將列舉項定義為英語,但是,在使用的時候,特別針對國內客戶的時候,如果顯示的英文,則不符合要求,不易於使用者使用。

儘管現在列舉定義也能定義中文列舉項,但在優雅的英文**中穿插著中語,確實很不爽。如果涉及多語,很難擴充套件。

也有人經常用到常量來代替列舉,但這種方法在系統開發中不太可取,具體見:列舉與常量。

為了方便使用者使用, 希望能夠找到一種比較好的方法,將列舉轉為我們想要的集合。

列舉的定義中加入描述,如果要支援多語,則直接修改列舉描述即可。也不用修改其他**。

通過反射思想,得到針對某一枚舉型別的描述。具體實現起來,有如下**中的三個不同的的方式。

using

system;

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

//;}

view code

參考文章

列舉顯示中文問題

列舉轉中文,通過反射方法與描述的方式獲取

示例 有人為了顯示中文,這樣定義列舉嗎?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種實現...