Не похоже, что вам нужны универсальные шаблоны для этого списка, поэтому вы можете сделать так, чтобы интерфейс реализовывал неуниверсальный интерфейс:
interface IFoo<out T> : IFoo { }
Таким образом, все ваши объекты реализуют один и тот же интерфейс. Это не может быть плохой идеей, поскольку у них есть что-то общее. Теперь вы можете просто использовать List<IFoo>
.