Visual Studio offers an automatic full working implementation of interfaces like IList<>.
You need only to write something like this code:
public class MyCollection<T> : IList<T>
{
// This line is important. Without it the auto implementation creates only
// methods with "NotImplemented" exceptions
readonly IList<T> _list = new List<T>();
}
(while the line
readonly IList<T> _list = new List<T>();
is the important one!)
Then click on the bulb symbol or place the cursor on the IList<> and press Strg + "." You will become several implementations offered, like: