IList does not inherit IList where IEnumerable inherits IEnumerable.
If out mo
Note that since 2012, in .NET 4.5 and later, there exists a covariant (out modifier) interface,
public interface IReadOnlyList
see its documentation.
Usual collection types like List, Collection and YourClass[] do implement IReadOnlyList and because of the covariance can also be used as IReadOnlyList and ultimately IReadOnlyList.
As you have guessed, you will not be able to modify your list through a IReadOnlyList<> reference.
With this new interface, you might be able to avoid the non-generic IList all together. However you will still have the problem that IReadOnlyList is not a base interface of IList.