我在那里,我给一个对象,并需要将情况:转换对象集合
- 确定该物体是一个单一的对象或一个集合(数组,列表等)
- 如果是一个集合,尽管列表中的一步。
我到目前为止。测试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