В общем, этого нельзя сделать. Индексатор - это свойство, которое принимает аргументы и может принимать любой аргумент (соответствующего типа): нет гарантии, что будет конечный набор значений:
public class DumbExample
{
// What constitutes "all the values of" the DumbExample indexer?
public string this[string s] { get { return s; } }
}
Некоторые классы могут предоставлять способ обработки действительных входных данных для индексатора (или получателя индексатора), например, Dictionary<TKey,TValue>.Keys
(здесь, конечно, набор индексаторов может принимать любой TKey, но Keys, по крайней мере, дает вам действительные входные данные для геттера, что вам и нужно в этом случае), List<T>.Count
и т. Д., Но это будет специфичным для класса. Таким образом, ваш код должен обрабатывать каждый из них как особый случай.