一段代码值一千字……
public enum enTest { a, b, c }
public void PrintEnum<T>()
{
foreach (var E in Enum.GetValues(typeof(T)))
Debug.WriteLine(E.ToString());
}
PrintEnum<enTest>();
PrintEnum<enTest?>(); // This will cause failure in Enum.GetValues()
Run Code Online (Sandbox Code Playgroud)
上面从一个更大的问题简化来说明失败。
有谁知道当有人传递给我一个 Nullable Enum 时,我如何遍历(或获取所有值)?
提前致谢。
这个怎么样?
public static void PrintEnum<T>()
{
Type t = typeof (T);
if (t.IsGenericType)
{
//Assume it's a nullable enum
t = typeof (T).GenericTypeArguments[0];
}
foreach (var E in Enum.GetValues(t))
Console.WriteLine(E.ToString());
}
Run Code Online (Sandbox Code Playgroud)