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