(я бы это проверить сам, но у меня нет 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>
? Это существует?