Это технически нельзя сделать в C#. Почитай про вариантность генериков.
Во-первых, она применяется только к интерфейсам (если я не путаю). А во-вторых, даже если закрыть на это глаза, то класс, по которому делается вариация, должен встречается только в in- или out-позициях. А в реализации IList
он был бы одновременно в обеих.