[enum汎用ヘルパクラス]
// enum定義
enum Gender { Unknown, Male, Female };
// ジェネリックを利用した汎用ヘルパクラス
static class EnumUtil<T>
{
// 整数値が enum で定義済みかどうか?
public static bool IsDefined(int n)
{
return Enum.IsDefined(typeof(T), n);
}
// Foreach用のGetEnumeratorを持つヘルパクラス
public class EnumerateEnum
{
public IEnumerator<T> GetEnumerator()
{
foreach (T e in Enum.GetValues(typeof(T)))
yield return e;
}
}
// enum定義をforeachに渡すためのヘルパクラスを返す
public static EnumerateEnum Enumerate()
{
return new EnumerateEnum();
}
}
class Program
{
static void Main(string[] args)
{
// enumを文字列に変換する。
Console.WriteLine("{0} => {1}", Gender.Unknown, Gender.Unknown.DisplayName());
// 整数値がenumの値として定義済みかチェックする
int n = 1;
if (GenderExt.IsDefined(n))
Console.WriteLine("整数値:{0}は{1}として定義されています。", n, ((Gender)n).ToString());
else
Console.WriteLine("整数値:{0}は未定義です。", n);
// 定義済みのenumを列挙する
foreach (var gender in GenderExt.Enumerate())
{
Console.WriteLine("{0}:{1}", gender.DisplayName(), (int)gender);
}
}
}