我有一个返回所有枚举值的方法(但这并不重要)。重要的是它需要T
并返回IEnumerable<T>
。
private static IEnumerable<T> GetAllEnumValues<T>(T ob)
{
return System.Enum.GetValues(ob.GetType()).Cast<T>();
}
或者
private static IEnumerable<T> GetAllEnumValues<T>(T ob)
{
foreach (var info in ob.GetType().GetFields(BindingFlags.Public | BindingFlags.Static))
{
yield return (T) info.GetRawConstantValue();
}
}
要使用此方法,您需要使用类的实例调用它 - 在这种情况下,使用我们想要探索的枚举中的任何值:
GetAllEnumValues( Questions.Good );
我想更改方法的签名以接受System.Type
并能够像这样调用它:
GetAllEnumValues( typeof(Questions ));
我不知道签名会是什么样子:
private static IEnumerable<?> GetAllEnumValues<?>(System.Type type)
以及如何应用铸造或Convert.ChangeType
实现这一目标。
我不想打电话GetAllEnumValues<Questions>( typeof(Questions ));
这甚至可能吗?