Все должно быть хорошо, если Session
реализует ISession
- , если вы используете C # 4 и .NET 4. Если нет, то не будет.
Обратите внимание, что в вопросе, на который вы ссылались, в обоих случаях используется одна и та же буква "Т", тогда как у вас есть исключение о преобразовании List<Session>
в IEnumerable<ISession>
. Вы не указали, где вы получаете исключение, из-за чего немного сложнее точно понять, что происходит ... Вы уверены, что это на самом деле код, который не выполняется? Вы уверены, что получаете исключение, а не ошибку во время компиляции?
РЕДАКТИРОВАТЬ: Если вы не используете .NET 4 и C # 4, обходной путь для ковариации здесь достаточно прост - используйте оператор Cast<T>()
LINQ:
return sessionList.Cast<ISession>();