Because there's no inheritance relation between List<X> and List<Y> even if there is one between X and Y.
Also keep in mind that if such a cast was possible, you would then be able to do list1.Add(new SomeOtherIMyInterfaceImplementation()) which would violate the type of your list object.
As a workaround, perhaps you can create a new list with List<T>.ConvertAll
|