private Type GetGenericListItemType (Type type)
{
if (type.IsGenericType && type.GetGenericTypeDefinition () == typeof (ICollection<>))
return type.GetGenericArguments () [0];
Type t = null;
foreach (Type i in type.GetInterfaces ())
if ((t = GetGenericListItemType (i)) != null)
return t;
return null;
}
#endif