If a member/variable is declared as an interface, it can be instantiated with any class that implements said contract. For example, you could instantiate someName
with List<Writer>()
, but not with new IList<Writer>()
.
IList<Writer> someName = new List<Writer>();
// someName can access any member of IList, but not specific members of List