オブジェクトが与えられ、次のことを行う必要がある状況があります。
- そのオブジェクトが単一のオブジェクトかコレクション (配列、リストなど) かを判断します。
- コレクションの場合は、リストをステップ実行します。
私がこれまでに持っているもの。IEnumerable のテストが機能しません。また、IEnumerable への変換は、非プリミティブ型に対してのみ機能します。
static bool IsIEnum<T>(T x)
{
return null != typeof(T).GetInterface("IEnumerable`1");
}
static void print(object o)
{
Console.WriteLine(IsIEnum(o)); // Always returns false
var o2 = (IEnumerable<object>)o; // Exception on arrays of primitives
foreach(var i in o2) {
Console.WriteLine(i);
}
}
public void Test()
{
//int [] x = new int[]{1,2,3,4,5,6,7,8,9};
string [] x = new string[]{"Now", "is", "the", "time..."};
print(x);
}
誰でもこれを行う方法を知っていますか?