(я бы это проверить сам, но у меня нет VS2010 (пока))
Скажем, у меня есть 2 базовых интерфейса:
IBaseModelInterface
IBaseViewInterface
И 2 интерфейса, реализующих эти функции:
ISubModelInterface : IBaseModelInterface
ISubViewInterface : IBaseViewInterface
Если я определяю Tuple<IBaseModelInterface, IBaseViewInterface>, я хотел бы установить это на основе результата factory, который возвращает Tuple<ISubModelInterface, ISubViewInterface>.
В С# 3 я не могу этого сделать, даже если суб-интерфейсы реализуют базовые интерфейсы. И я уверен, что С# 4 позволяет мне это делать, если я использовал IEnumerable<IBaseModelInterface>, потому что теперь он определяется ключевым словом in, чтобы разрешить ковариацию. Таким образом, Tuple позволяет мне это делать?
Из чего (мало) я понимаю, ковариация разрешена только на интерфейсах, значит, это означает, что должен быть интерфейс ITuple<T1, T2>? Это существует?