列挙型が渡されたときに特定のマークアップを返すジェネリック メソッドを作成しようとしています。以下は、この質問に必要な最小限のコードに縮小されたメソッドです。
public static string GetMarkup(Type enumType)
{
StringBuilder builder = new StringBuilder();
foreach (var val in Enum.GetValues(enumType))
{
builder.Append(val.ToString());
}
return builder.ToString();
}
メソッドは次のように呼び出されます。ここで、CopyType は列挙型です。
GetDropDownListHtml(typeof(CopyType))
目標は、このメソッドに渡す列挙型用に作成した ToString() 拡張メソッドを呼び出せるようにすることです。問題は、メソッドをジェネリックにするためvar
に、 foreach 宣言で変数を宣言するために使用する必要があることですが、それはそれをボックス化します。CopyType の列挙型の代わりに、ボックス化された CopyType であるオブジェクトがあります。
それに応えて、私はこのように多くのことを考えてみましたが、役に立ちませんでした:
((typeof(enumType))val.ToString()
何か案は?