一般的なリストを文字列に変換する拡張メソッドがあります。オブジェクトがジェネリックリストの型であるかどうかを検出し、必要な型にキャストする方法?
public static string ConvertToString<T>(this IList<T> list)
{
StringBuilder sb = new StringBuilder();
foreach (T item in list)
{
sb.Append(item.ToString());
}
return sb.ToString();
}
私は、リストを保持するオブジェクト型のオブジェクトを持っています。リストはList<string>
、List<int>
、List<ComplexType>
のいずれのタイプのリストであってもよい。
このオブジェクトが汎用リストであることを検出できるため、特定の汎用リストタイプにキャストしてConvertToString
メソッドを呼び出す方法はありますか?
//ignore whats happening here
//just need to know its an object which is actually a list
object o = new List<int>() { 1, 2, 3, 4, 5 };
if (o is of type list)
{
string value = (cast o to generic type).ConvertToString();
}
リストだかどうかを確認するために配列ではありません。 OPが 'T'を見つけたり、メソッドを呼び出すのにも役立ちません –