用特性來給列舉值或類的屬性「取」乙個中文名字

2022-07-31 18:36:12 字數 966 閱讀 9821

在這一次的專案開發中,遇到了乙個很實際的問題,所以想用這種方式把它記下來,希望能夠得到大家的指點。首次發博,多多指教。

問題:專案中的訊息系統裡,有乙個字段叫做訊息級別,建立好的列舉型別的值字段是英文的,問題就來了,前段顯示的時候是中文。

public enum  types

low,

mid,

height

類似這樣的效果,一開始覺得可以在js中用switch判斷,後來發現這樣修改起來比較麻煩(比如我需要新增乙個值,修改的地方就比較多),所以就想到了乙個辦法。

解決方案:

解決辦法就是利用c#中的特性。

public class name:attribute

public name(string name)

this.name=name;

public string name

在列舉中新增上name特性就好了。

public enum  types

[name("低")]

low,

[name("中")]

mid,

[name("高")]

height

下面就是獲取給定名稱的方法:

///

/// 獲取列舉的name特性值

///

///

/// 列舉值

/// 要獲取的特性

///

public static string getenumname(this t thistypevalue,type attrtype) where t : struct

測試結果如下:

var cnname=types.low.getenumname(typeof(name));    //低

呼叫則個方法就可以拿到每個訊息級別所代表的中文名稱了,主要是修改起來比較簡單(只需要在列舉型別的這乙個地方修改)。

首次發博,請多多關照,歡迎批評。

用js如何輸出乙個物件的所有屬性值

陣列和物件是我們平時接觸最多的資料結構,他們各有各的優勢 先建立乙個示例物件 var obj 獲取陣列內元素的的方式 通過index下標的方式 例如 arr 1 是獲取陣列內下標為1的元素 注意 陣列的下標是從 0 開始的,即下標為 0 元素是陣列的第乙個元素js輸出物件的屬性 該方法返回乙個陣列,...

C 用反射實現兩個類的物件之間相同屬性的值的複製

在進行實體轉換操作的時候如果需要在對兩個實體之間兩個屬性字段差不多相同的類要進行乙個互相的轉換,我們要把a物件的所有欄位的值都複製給b物件,我們只能用b.屬性 a.屬性來寫,如果屬性欄位太多的話,就要寫很多行複製語句,麻煩還容易漏掉一些,這個時候可以利用c 的反射來實現複製。我們可以寫這樣乙個利用泛...

C 用反射實現兩個類的物件之間相同屬性的值的複製

在進行實體轉換操作的時候如果需要在對兩個實體之間兩個屬性字段差不多相同的類要進行乙個互相的轉換,我們要把a物件的所有欄位的值都複製給b物件,我們只能用b.屬性 a.屬性來寫,如果屬性欄位太多的話,就要寫很多行複製語句,麻煩還容易漏掉一些,這個時候可以利用c 的反射來實現複製。我們可以寫這樣乙個利用泛...