Andrew Stopford has an interesting couple of posts on the CLR’s support for generic type variance in version 2.0, and the lack of which in C# 2.0. I join Andrew in wishing this would be implemented in C# 3.0 (or at least in an interim ‘2.1’ release with .NET 3.0).
Be sure to read the comments on those posts too for some more in-depth information about this.
 Generic type variance means that
List<string> is a
List<object>, just like
string is a