보관함

csharp enum 을 사용하는 코드 샘플

출처 : https://qiita.com/mkuwan/items/be6745f2c9e7823f8a66

public static class TypeExtention
{
	/// <summary>
	/// enumの値リストを取得
	/// </summary>
	/// <typeparam name="T"></typeparam>
	/// <returns></returns>
	public static List<T> GetEnumList<T>(this Type type) where T : Enum
	{
		return Enum.GetValues(typeof(T)).Cast<T>().ToList();
	}

	/// <summary>
	/// enumのDescripntionリストを取得
	/// </summary>
	/// <typeparam name="T"></typeparam>
	/// <returns></returns>
	public static IEnumerable<string> GetEnumDescriptionEnumerable<T>(this Type type) where T : Enum
	{
		foreach (T value in Enum.GetValues(typeof(T)))
			yield return value.GetDescriptionFromValue();
	}

	/// <summary>
	/// enumのDescripntionリストを取得
	/// </summary>
	/// <typeparam name="T"></typeparam>
	/// <returns></returns>
	public static List<string> GetEnumDescriptionList<T>(this Type type) where T : Enum
	{
		List<string> descriptionList = new List<string>();
		foreach (T value in Enum.GetValues(typeof(T)))
			descriptionList.Add(value.GetDescriptionFromValue());

		return descriptionList;
	}
}

사용예

public enum SampleEnum
{
	[Description("東京")]
	Tokyo = 1,

	[Description("名古屋")]
	Nagoya = 3,

	[Description("札幌")]
	Sapporo = 5,

	[Description("大阪")]
	Osaka = 7

}

static void Test2()
{
	Console.WriteLine("EnumExtention  GetDescriptionFromValueを使ってTokyoのDescriptionを取得");
	Console.WriteLine(SampleEnum.Tokyo.GetDescriptionFromValue());
	Console.WriteLine();

	Console.WriteLine("StringExtention  GetEnumValueFromDescriptionを使ってDescriptionからenum値を取得");
	Console.WriteLine("名古屋".GetEnumValueFromDescription<SampleEnum>());
	Console.WriteLine();

	Console.WriteLine("IntExtention  GetEnumDescriptionFromIntを使ってint値からDescriptionを取得");
	var sapporo = ((int)5).GetEnumDescriptionFromInt<SampleEnum>();
	Console.WriteLine(sapporo);
	Console.WriteLine();

	Console.WriteLine("IntExtention  GetEnumValueFromIntを使ってint値からenum値を取得");
	var osaka = ((int)7).GetEnumValueFromInt<SampleEnum>();
	Console.WriteLine(osaka);
	Console.WriteLine();

	Console.WriteLine("TypeExtention  GetEnumListを使ってenumの値リストを取得");
	var enumValues = typeof(SampleEnum).GetEnumList<SampleEnum>();
	foreach (var e in enumValues)
		Console.WriteLine(e);

	Console.WriteLine();

	Console.WriteLine("TypeExtention  GetEnumDescriptionListを使ってDescriptionリストを取得");
	var enumDescriptions = typeof(SampleEnum).GetEnumDescriptionList<SampleEnum>();
	foreach (var e in enumDescriptions)
		Console.WriteLine(e);

	Console.WriteLine();

	Console.WriteLine("TypeExtention  GetEnumDescriptionEnumerableを使ってDescriptionリストを取得");
	var enumDescriptionsEnumerable = typeof(SampleEnum).GetEnumDescriptionEnumerable<SampleEnum>();
	foreach (var e in enumDescriptionsEnumerable)
		Console.WriteLine(e);

	Console.ReadLine();
}

 

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.