ºÇ½ª¹¹¿·¡§
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¤Ë¤Æ»ä¤¬¼ÁÌ䡦ºîÀ®¤µ¤»¤ÆÄº¤¤¤¿¤â¤Î¤ò¡¢²þ¤á¤Æºî¤ê¤Ê¤ª¤·¤¿¤â¤Î¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- Áí¹ç




¥³¥á¥ó¥È¤ò¤«¤¯