(I would check this out for myself, but I don't have VS2010 (yet))
Say I have 2 base interfaces:
IBaseModelInterface
IBaseViewInterface
And 2 interfaces realizing those:
ISubModelInterface : IBaseModelInterface
ISubViewInterface : IBaseViewInterface
If I define a Tuple<IBaseModelInterface, IBaseViewInterface>
I would like to set that based on the result of a factory that returns Tuple<ISubModelInterface, ISubViewInterface>
.
In C# 3 I can't do this even though the sub interfaces realize the base interfaces. And I'm pretty sure C# 4 lets me do this if I was using IEnumerable<IBaseModelInterface>
because it's now defined with the in
keyword to allow covariance. So does Tuple
allow me to do this?
From what (little) I understand, covariance is only allowed on interfaces, so does that mean there needs to be an ITuple<T1, T2>
interface? Does this exist?