Вы проверяете, реализуется ли не универсальная версия ICollection
объектом, и счастливо пытаетесь привести ее к ICollection<Object>
...
Либо проверьте, действительно ли объект реализует ICollection<Object>
:
private bool isCollection(object o)
{
return o is ICollection<object>;
}
или используйте что-то вроде
rCollection = ((IEnumerable)prop.GetValue(obj, null)).OfType<Object>().ToList();