这里是我到目前为止的代码:如何获得自ICollection <T>计数与未知牛逼
//TODO: Look for a way of handling ICollection<T>
if (value is ICollection)
{
return CreateResult(validationContext, ((ICollection)value).Count);
}
if (value is IEnumerable)
{
var enumerator = ((IEnumerable)value).GetEnumerator();
try
{
var count = 0;
while (enumerator.MoveNext())
count++;
return CreateResult(validationContext, count);
}
finally
{
if (enumerator is IDisposable)
((IDisposable)enumerator).Dispose();
}
}
有没有得到Count
出ICollection<T>
而不诉诸遍历集合的好办法吗?
奇怪。在发布这个问题之前,我看了一下,我可以发誓,我没有看到列表的接口列表中的ICollection。也许我正在看IList 。 –
当'collection'是一个List,但是如果我的类型真的是未知的,就像System.Object那么它将不起作用,除非提供了。 –