none
列舉 Enum Description RRS feed

  • 問題

  • 請問有取得的方式。是否有方法可以用程式去動態的修改呢?

    public enum Animal

    {

    [Description("狗"),CustomDescription("狗1")]

    Dog,

    [Description("貓")]

    Cat

    }

    取得Description

    FieldInfo fi = result.GetType().GetField(result.ToString());
    DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
    string sss = attributes.Length > 0 ? attributes[0].Description : "";


    • 已編輯 星小飛 2019年6月1日 上午 04:02
    2019年6月1日 上午 03:30

所有回覆

  • 你指的動態修改是指? 你要修改 Description 的 "狗" "狗1" ?

    通常寫在 Description 理論上已經是寫死 是靜態的

    如果你要動態 可變動的話 建議 存在資料庫 做作個對應表

    然後需要的時候撈出來


    2019年6月1日 上午 04:04
  • 你指的動態修改是指? 你要修改 Description 的 "狗" "狗1" ?

    是的,我就是要修改這個。因為class裡面的屬性如果用Description是可以修改的。所以才好奇Enum有沒有機會做到。

    2019年6月1日 上午 04:14
  • 樓主是要做多國語是嘛 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年6月1日 下午 02:38
    版主
  • 感覺版主您可不用反射也可以完成你的需求

    依照你的需求可以嘗試使用字典 或是 一個集合來做你的對應表.

    如下將你的enum 當作key 去找尋相對應的資料

    Dictionary<Animal, string> animalDict = new Dictionary<Animal, string>();
    animalDict.Add(Animal.Dog, "狗");
    animalDict.Add(Animal.Cat, "貓");

    取值時

     string result;
     animalDict.TryGetValue(Animal.Cat, out result);

    給值時

    animalDict[Animal.Dog] = "狗1";

    2019年6月2日 上午 02:27
  • 樓主是要做多國語是嘛 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/


    是啊~我就是想做多國語
    2019年6月2日 上午 02:44
  • 感覺版主您可不用反射也可以完成你的需求

    依照你的需求可以嘗試使用字典 或是 一個集合來做你的對應表.

    如下將你的enum 當作key 去找尋相對應的資料

    Dictionary<Animal, string> animalDict = new Dictionary<Animal, string>();
    animalDict.Add(Animal.Dog, "狗");
    animalDict.Add(Animal.Cat, "貓");

    取值時

     string result;
     animalDict.TryGetValue(Animal.Cat, out result);

    給值時

    animalDict[Animal.Dog] = "狗1";


    我現在就是使用類似這麼方式。只是在想有沒有機會用反射來完成。
    2019年6月2日 上午 02:47
  • 搭配資源檔案比較好做, 參考
    https://stackoverflow.com/questions/569298/localizing-enum-descriptions-attributes


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年6月2日 上午 04:31
    版主