Общий способ конвертировать IFoo <T>в IFoo <object> - PullRequest
1 голос
/ 10 октября 2011

У меня есть интерфейс:

interface IFoo<out T> 
{
   T Get();
}

и некоторые экземпляры, такие как IFoo<int> a, IFoo<User> u, IFoo<string> s и т. Д. Для их сбора используется List<IFoo<object>>. Но дисперсия не работает для типов значений , есть ли правильный способ поместить их в список?

1 Ответ

4 голосов
/ 10 октября 2011

Не похоже, что вам нужны универсальные шаблоны для этого списка, поэтому вы можете сделать так, чтобы интерфейс реализовывал неуниверсальный интерфейс:

interface IFoo<out T> : IFoo { }

Таким образом, все ваши объекты реализуют один и тот же интерфейс. Это не может быть плохой идеей, поскольку у них есть что-то общее. Теперь вы можете просто использовать List<IFoo>.

...