我在那裏,我給一個對象,並需要將情況:轉換對象集合
- 確定該物體是一個單一的對象或一個集合(數組,列表等)
- 如果是一個集合,儘管列表中的一步。
我到目前爲止。測試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);
}
任何人都知道如何做到這一點?
如果你爲什麼地球上您使用的對象泛型?爲什麼不打印(T obj)?另外,你試過的是IEnumerable而不是GetInterface?並且爲了運行時檢查你不應該使用typeof,你應該使用GetType。 –
2013-02-20 16:22:40
謝謝,所有。我用Snippet編譯器測試並沒有注意到它是「使用System.Collections.Generic;」默認。我曾嘗試過非泛型IEnumerable,並且在更改爲「使用System.Collections」之前出現錯誤。 – 2013-02-20 17:26:48