すべての列挙値を返すメソッドがあります (ただし、これは重要ではありません)。重要な点は、 を受け取っ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 ));
これは可能ですか?