Question: What C# interface should be used if I only want to be able to index into instances of a type? I don't need (or want) the ability to add/remove/edit elements. Enumeration is okay. Does this require a custom `IIndexable` type?

In this case `IList` is overkill because it forces implementation of members I don't want to have.

Answer: 
`IList<>` (assuming you want to stay generic) is the only interface to include an indexer. 

However, you can just explicitly implement and throw `NotSupportedException` for all those operations you don't want to support, or just implement `IEnumerable<>` and have the rest on the class only, not in an interface.
Why not just `IEnumerable<>` + a custom interface with just an indexer?