Поскольку вы говорите, что знаете, что объект представляет собой список фруктов, но вы не знаете, к какому фрукту это список, вы можете сделать следующее:
List<Fruit> fruits = ((IEnumerable)values).Cast<Fruit>().ToList();
Если вы используете .NET 4 (исключая Silverlight 4), вы можете использовать решение Джастина Нисснера:
List<Fruit> fruits = ((IEnumerable<Fruit>)values).ToList();
Наконец, возможно, будет возможно использовать универсальное решение, если есть сайт вызова, где известен статический тип фрукта (Apple или что-то еще). Это значило бы немного изменить код, чтобы вы больше не получали значения с помощью отражения.
Другим общим подходом было бы создание универсального метода и его создание во время выполнения с помощью вызова GetType () для объекта, но это, вероятно, случай излечения хуже, чем болезнь.