ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2022ǯ11·î21Æü(·î) 11:47:36ÍúÎò
¥¸¥§¥Í¥ê¥¯¥¹¤òÍøÍѤ·¤Æ¡¢Ê¸»úÎó¤ò<T>¤Ë»ØÄꤷ¤¿enum ¤ËÊÑ´¹¤¹¤ë¥æ¡¼¥Æ¥£¥ê¥Æ¥£¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤·¤¿¡£
¡¡¤³¤Á¤é¤¬¥½¡¼¥¹¤Ç¤¹¡£¡ÊGithub¤âƱ¤¸¤Ç¤¹¡Ë
https://github.com/mitsuruyamaura/ConvertEnumType
using System; /// <summary> /// string => enum¤Ø¤ÎÊÑ´¹ÍÑ¥¯¥é¥¹ /// </summary> public class ConvertEnumType { /// <summary> /// string¤ò»ØÄꤷ¤¿¥¿¥¤¥×¤ÎEnum¤ËÊÑ´¹¤¹¤ë /// </summary> public static IEnum FromString<IEnum>(string str) where IEnum : struct { return (IEnum)Enum.Parse(typeof(IEnum), str, true); } }
¥Ý¥¤¥ó¥È¤È¤·¤Þ¤·¤Æ¤Ï¡¢
¡¦ÊÑ´¹¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·»þ¡¢Enum.Parse¤Î¤è¤¦¤Ë2²óƱ¤¸Enum¤Î¼ïÎà¤ò»ØÄꤹ¤ëɬÍפ¬¤Ê¤¤¤³¤È¡£
¡¦Ê¸»úÎó¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤ʤ¯Enum¤ËÊÑ´¹¤Ç¤¤ë¤³¤È¡£
¡¦Ê¸»úÎó¤òEnum¤ËÊÑ´¹¤·¤ÆÇÛÎ󡦥ꥹ¥È¤Ë¤¹¤ë¾ì¹ç¤Ë¤ÏLinq¤ò»È¤¦¤È1¹Ô¤Ç½ñ¤±¤ë¤³¤È
¡¡¤Ê¤É¤Ç¤·¤ç¤¦¤«¡£where¤ÇIEnum¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¤¬¡¢¹½Â¤ÂÎ(struct)¤À¤ÈÆþ¤Ã¤Æ¤·¤Þ¤¦¤¿¤áÃí°Õ¤¬É¬ÍפǤ¹¡£
¤È¤Ï¤¤¤¨¡¢¤³¤ì¤ÏÌá¤êÃͤΤ¢¤ë½èÍý¤Ç¤¹¤Î¤Ç¡¢º¸ÊÕ¤ÎÃͤ¬Ìá¤ëÃͤȰۤʤë¾ì¹ç¤Ë¤Ï¥³¥ó¥Ñ¥¤¥ë½ÐÍ褺¤Ë¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£»ÈÍѴְ㤤¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£
¡¡¤³¤ì¤òƧ¤Þ¤¨¤Æ¡¢¥µ¥ó¥×¥ë¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤ß¤Þ¤¹¡£
using System.Collections.Generic; using UnityEngine; using System.Linq; public class EnumTest : MonoBehaviour { ¡¡¡¡// TestÍѤËEnum¤ò3¼ïÎàÍÑ°Õ public enum TIME_TYPE { MORNING, AFTERNOON, EVENING, NIGHT, } public enum DAY_TYPE { SUNDAY, MANDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } public enum SEASON_TYPE { SPRING, SUMMER, AUTUMN, WINTER } // DebugÍѤËpublic¤Ç¡£¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤Ç³Îǧ¤Ç¤¤ë¤è¤¦¤Ë public DAY_TYPE dayType; public TIME_TYPE[] timeTypeArray; public List<SEASON_TYPE> seasonTypeList = new List<SEASON_TYPE>(); // »ÈÍÑÎã void Start() { // ʸ»úÎó¤ò°ú¿ô¤ÇÅϤ·¤¿¼ïÎà¤ÎEnum¤ËÊÑ´¹ string day = "friday"; dayType = ConvertEnumType.FromString<DAY_TYPE>(day); // ÇÛÎóÍѤËʸ»úÎó¤òÍÑ°Õ string times = "NIGHT,afternoon,Morning"; // ¤³¤Î1¹Ô¤Ç¾åµ¤ÎEnum.Parse¤ÈÇÛÎ󲽤¬½ÐÍè¤ë(Select(x => (x))¤Î°ú¿ô¤Ï¾Êά¤Ç¤¤Þ¤¹) timeTypeArray = times.Split(',').Select(ConvertEnumType.FromString<TIME_TYPE>).ToArray(); // List¤Î¾ì¹ç¤âƱ¤¸ // ListÍѤËʸ»úÎó¤òÍÑ°Õ¤·¤Æ¡¢ÊÑ´¹ string seasons = "summer,Winter,spring,AUTUMN"; seasonTypeList = seasons.Split(',').Select(ConvertEnumType.FromString<SEASON_TYPE>).ToList(); } }
¤³¤Á¤é¤¬¼Â¹ÔÁ°¡£

¤³¤Á¤é¤¬¼Â¹Ô¸å¤Ç¤¹¡£

¡¡¤¤¤Þ¤Þ¤ÇJson¤Ç¼èÆÀ¤·¤¿Ê¸»úÎó¤òEnum²½¤·¤ÆÇÛÎó¤Ë¤¹¤ëºÝ¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤¤¤Þ¤·¤¿¤Î¤Ç¡¢º£²ó¤Î¥á¥½¥Ã¥É¤òÍÑ°Õ¤¹¤ë¤³¤È¤Ç¡¢½èÍý¤âÈó¾ï¤Ë¤¹¤Ã¤¤ê¤·¤Þ¤·¤¿¡£
// ÇÛÎóÍѤËʸ»úÎó¤òÍÑ°Õ string times = "NIGHT,afternoon,Morning"; // ʸ»úÎó¤òʬ³ä¤·¤Æ¡¢string¤ÎÇÛÎó¤òºîÀ® string[] strArray = timeArray.Split(',').ToArray(); // EnumÍѤÎÇÛÎó¤ò½é´ü²½ timeTypeArray = new TIME_TYPE[strArray.Length]; // string¤ÎÇÛÎó¤òEnum¤ËÊÑ´¹¤·¤ÆÇÛÎó¤Ë¡ÊLinq»È¤ï¤Ê¤¤¾ì¹ç¡Ë for (int i = 0; i < strArray.Length; i++) { timeTypeArray[i] = (TIME_TYPE)Enum.Parse(typeof(TIME_TYPE), strArray[i]); }
¡¡°Ê¾å¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Ê¤ª¤³¤Á¤é¤Ï¡¢teratail¤Ë¤Æ»ä¤¬¼ÁÌ䡦ºîÀ®¤µ¤»¤Æ夤¤¿¤â¤Î¤ò¡¢²þ¤á¤Æºî¤ê¤Ê¤ª¤·¤¿¤â¤Î¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- Áí¹ç
¥³¥á¥ó¥È¤ò¤«¤¯